PostgresSQL中数字之间的平均数量

乔达

我有一个这样的数据库:

ACTIONS
id   day   name
1    4     Bill
2    8     Susan
3    10    Bill
4    12    Bill
5    18    Susan
6    22    John

我想获得按名称分组的2条记录之间的平均天数或延迟时间。

账单计算步骤示例

  1. 10-4 = 6之间的天数
  2. 12-10之间的天数= 2
  3. 平均值= 4

Susan计算步骤示例

  1. 18-8 = 10之间的天数
  2. 平均值= 10

由于John只有一条记录,因此没有时间间隔,因此应该返回0或null,这两种方法都可以。

因此,我正在寻找编写执行这些计算步骤并返回以下数据集的查询:

RESULTS
name       average_days_between
Bill       4
Susan      10
John       null

我能够编写一个脚本,该脚本遍历每条记录并一次平均一次计算,但是生成大量记录需要花费很长时间。

是否可以编写PostgreSQL查询来生成这样的结果集?

迈克·欧根尼克

lag()窗口功能会为你做到这一点。如果太慢,则将intervalsCTE重写为子查询。

with actions (id, day, name) as (
  values (1, 4, 'Bill'),
         (2, 8, 'Susan'),
         (3, 10, 'Bill'),
         (4, 12, 'Bill'),
         (5, 18, 'Susan'),
         (6, 22, 'John')
), intervals as (
  select name,
         day -
           lag(day)
             over (partition by name
                       order by day) as latency
  from actions
)
select name,
       avg(latency) as avg_latency,
       count(*) as observations
  from intervals
 where latency is not null
 group by name
 order by name;

┌───────┬─────────────────────┬──────────────┐
│ name  │     avg_latency     │ observations │
├───────┼─────────────────────┼──────────────┤
│ Bill  │  4.0000000000000000 │            2 │
│ Susan │ 10.0000000000000000 │            1 │
└───────┴─────────────────────┴──────────────┘
(2 rows)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何计算数字列表中的平均数

来自分类Dev

在Matlab中查找连续相同值元素的平均数量

来自分类Dev

平均数据表中的每一列

来自分类Dev

蜂巢集中的元素的平均数量?

来自分类Dev

如何在MySQL中的单个查询中获取平均数据和特定数据?

来自分类Dev

如何计算一周中每天的平均数量?

来自分类Dev

创建平均数量丰富的堆叠条形图

来自分类Dev

r中按列值的平均数据帧数据

来自分类Dev

N个列表之间成对不同元素的平均数量

来自分类Dev

从自身中减去平均数组值

来自分类Dev

mongodb:查询平均数大于数字的文档

来自分类Dev

在pandas groupby中查找最近30天和60天的平均数量

来自分类Dev

在Matlab中查找连续的相同值元素的平均数量

来自分类Dev

在Swing中未知数量的组件之间平均分配空间?

来自分类Dev

使用MATLAB在多个Excel文件中的平均数据

来自分类Dev

平均数组中的像素数据

来自分类Dev

取小组平均数

来自分类Dev

IEEE-754中2到3之间的数字数量

来自分类Dev

求平均数

来自分类Dev

平均数组列数

来自分类Dev

计算LAB和RGB平均数之间有区别吗?

来自分类Dev

检查一个数字是否被其他平均数除

来自分类Dev

使用 for 循环而不是每个循环的最小数量和平均数量

来自分类Dev

计算数组中两个值之间的数字数量

来自分类Dev

如何在 C# 中为任意数量的数字编写平均方程

来自分类Dev

星级平均数

来自分类Dev

如何找到输入数字的平均值,但数字的数量未知?

来自分类Dev

快速平均数据库中的项目

来自分类Dev

计算成功转换前联系的客户平均数量