【问题标题】:Count the number of Consecutive 0s in a column with SQL用 SQL 计算一列中连续 0 的个数
【发布时间】:2021-06-16 10:35:50
【问题描述】:

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

sample data

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

output

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。你的结果与样本数据有什么关系?它们似乎无关。
  • 你的话与你的“输出”不一致。

标签: sql logic gaps-and-islands row-number


【解决方案1】:

您可以通过对1s 进行累计和来为0s 分配一个分组。剩下的就是聚合。所以,对于0s 的每个序列:

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;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多