如何在循环发生的连续事件序列上进行聚合

  • 本文关键字:事件 连续 循环 sql postgresql
  • 更新时间 :
  • 英文 :


表:

指示 num
停止 6
停止 2
启动 3
启动 8
停止 7
停止 3
停止 2
启动 8
启动 3

这是一个缺口和孤岛问题——假设您有一个指定排序的列。可能最简单的解决方案是使用行号的差异来识别组:

select indication, sum(num)
from (select ss.*,
row_number() over (partition by indication order by ?) as seqnum_2,
row_number() over (order by ?) as seqnum
from stop_start ss
) ss
group by indication, (seqnum - seqnum_2);

?用于指定排序的列。

这里有一个db<gt;摆弄

最新更新