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);
想法是从时间戳中减去一个数字序列。序列中的时间戳都将以相同的值结束。这似乎是您想要的组。
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);
想法是从时间戳中减去一个数字序列。序列中的时间戳都将以相同的值结束。这似乎是您想要的组。