用SQL计算列中连续0的数量

问题描述

我有一个包含以下数据的表格:

sample data

它有 balance 包含 0s1s。必需的是连续0的总数以及连续实例的数量,如下所示。

output

解决方法

您可以通过对 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;

我不确定你想如何总结这一点,但这解决了问题的“困难”部分。