表格:
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
答案 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);
想法是从时间戳中减去一系列数字。序列中的时间戳将以相同的值结束。这似乎是你想要的群体。