Postgres连续的时间间隔

时间:2018-01-21 20:18:51

标签: sql postgresql time intervals

表格:

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

1 个答案:

答案 0 :(得分:2)

我明白了。您可以使用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);

想法是从时间戳中减去一系列数字。序列中的时间戳将以相同的值结束。这似乎是你想要的群体。