表:
指示 | 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;摆弄