【问题标题】:Postgres consecutive time intervalsPostgres 连续时间间隔
【发布时间】:2018-01-21 20:18:51
【问题描述】:

桌子:

timestamp
---------------------
2018-01-15 14:31:23
2018-01-15 14:31:25
2018-01-15 14:31:26
2018-01-15 14:31:28
2018-01-15 14:31:29
2018-01-15 14:31:30
2018-01-15 14:31:35

如果有人展示如何使用 sql 获取连续的时间间隔,那将非常有帮助。后件是一秒一秒,如果有超过1秒的间隔不是后件,应该算作单独的间隔。

以下是预期结果:

result
--------
1
2
3
1

【问题讨论】:

  • 没有为您编写查询。展示一些自己的尝试!直到你这样做并提出一个精确的问题:VTC 太宽泛了。
  • 这个问题脱离了上下文,它是之前一些工作的产物,我无法分享整个任务,问题是那时我不知道该怎么做,这就是我在这里寻求帮助的原因。

标签: sql postgresql time intervals


【解决方案1】:

我明白了。您可以为此使用row_number() 技巧:

select grp, count(*)
from (select t.*, 
             (time_stamp - row_number() over (order by timestamp) * interval '1 second') as grp
      from t
     ) t
group by grp
order by min(timestamp);

这个想法是从时间戳中减去一个数字序列。序列中的时间戳都将以相同的值结束。这似乎是您想要的组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2022-11-25
    相关资源
    最近更新 更多