Postgres连续时间间隔

Postgres consecutive time intervals

table:

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 获得连续的时间间隔,那将非常有帮助。 Consequent 表示它有seconds seconds second one 1 seconds,如果有超过1秒的间隙则不是consequent,应该算作单独的interval。

以下是预期结果:

result
--------
1
2
3
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);

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