postgresql按序列分组时间戳
我已经两周大了,所以如果你能幽默一点的话,我会很有帮助的 在这种情况下,我很难弄清楚如何按一系列连续的时间戳小时步骤进行分组postgresql按序列分组时间戳,sql,postgresql,Sql,Postgresql,我已经两周大了,所以如果你能幽默一点的话,我会很有帮助的 在这种情况下,我很难弄清楚如何按一系列连续的时间戳小时步骤进行分组 For example: ID time 1 2008-11-11 01:00:00 2 2008-11-11 02:00:00 3 2008-11-11 04:00:00 4 2008-11-11 05:00:00 5 2008-11-11 06:00
For example:
ID time
1 2008-11-11 01:00:00
2 2008-11-11 02:00:00
3 2008-11-11 04:00:00
4 2008-11-11 05:00:00
5 2008-11-11 06:00:00
6 2008-11-11 08:00:00
我想以这样的分组结束:
Group above_table_ID's
1 1,2
2 3,4,5
3 6
这很容易在python循环中表达,但我真的不明白如何在sql/postgresql中表达这种逻辑
如果有人能帮我解释这个过程,我将不胜感激
谢谢您可以从时间戳中减去一个递增的数字,以小时为单位。连续的事物将具有相同的价值
select row_number() over (order by grp) as GroupId,
string_agg(id, ',') as ids
from (select t.*,
(time - row_number() over (order by time) * interval '1 hour') as grp
from table t
) t
group by grp;
您可以通过从时间戳中减去一个递增的数字来实现这一点,以小时为单位。连续的事物将具有相同的价值
select row_number() over (order by grp) as GroupId,
string_agg(id, ',') as ids
from (select t.*,
(time - row_number() over (order by time) * interval '1 hour') as grp
from table t
) t
group by grp;
戈登,你引领我走向了窗口功能,很可能改变了我的生活。谢谢你,戈登,你引领我走向了窗口功能,很可能改变了我的生活。非常感谢。