问题描述
它有 balance 包含 0s 和 1s。必需的是连续0的总数以及连续实例的数量,如下所示。
解决方法
您可以通过对 0
进行累计总和来为 1
分配一个分组。剩下的就是聚合。因此,对于每个 0
序列:
select min(dt),max(dt),count(*)
from (select t.*,sum(bal) over (order by dt) as grp
from t
) t
where bal = 0
group by grp;
我不确定你想如何总结这一点,但这解决了问题的“困难”部分。