Sql 计算按其他字段分组的平均差异btw时间戳?
我有一个“track_events”(跟踪事件)表,它以以下格式跟踪到信标(区域)的ping:Sql 计算按其他字段分组的平均差异btw时间戳?,sql,postgresql,Sql,Postgresql,我有一个“track_events”(跟踪事件)表,它以以下格式跟踪到信标(区域)的ping: id region triggered_at 1234 abc 2016-03-04 21:07:18.817+00 1235 def 2016-03-04 22:04:11.817+00 1236 abc 2016-03-05 01:21:43.817+00 1237 def 2016-03-05 07:44:43.817+00 1238 abc 2016-03-05 11:
id region triggered_at
1234 abc 2016-03-04 21:07:18.817+00
1235 def 2016-03-04 22:04:11.817+00
1236 abc 2016-03-05 01:21:43.817+00
1237 def 2016-03-05 07:44:43.817+00
1238 abc 2016-03-05 11:34:45.817+00
1238 ghi 2016-03-05 14:09:55.817+00
1238 abc 2016-03-06 02:12:10.817+00
我试图构建逻辑,通过确定[avg.time difference between triggers]并生成[avg.time difference btw]触发的所有区域的列表来估计信标(区域)是否已停止生成数据。我的逻辑如下:
关于如何编写此查询有什么建议吗 我建议你去尝试诱惑,让你的生活更轻松,一步一步地做你需要的事情。 对于每个步骤,添加一列以加入计算或从查询中提取。e、 g.上一次触发的时间、平均值、差异等 步骤1:使用以下脚本:
select a.id, a.region, a.triggered_at
, max(b.triggered_at) as prev_triggered_at
from track_events a
inner join track_events b
on a.region=b.region
and a.triggered_at>b.triggered_at
group by a.id,a.region,a.triggered_at
第2步:只需将一个AVG列添加到Tentable中,并使用AVG()函数计算所需的平均值。我会提供查询,但我不确定我是否从您提供的信息中得到正确答案
步骤3:选择带有where子句的语句,正如您所描述的,因为您的所有信息都在同一行中