Sql 如何对周期性发生的连续事件序列进行聚合?
表: 指示 号码 停止 6. 停止 2. 开始 3. 开始 8. 停止 7. 停止 3. 停止 2. 开始 8. 开始 3.Sql 如何对周期性发生的连续事件序列进行聚合?,sql,postgresql,Sql,Postgresql,表: 指示 号码 停止 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,
这是一个间隙和孤岛问题——假设您有一列指定了顺序。最简单的解决方案可能是使用行号的差异来标识组:
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);
?
用于指定排序的列
这是一种欺骗。请解释一下逻辑。如果假设行的顺序,那么SQL需要一个列来包含该顺序。