mysql - 在 SQL 中计算连续的数值
问题描述
关于这个场景已经存在很多问题,但是我无法在我的场景中复制答案。
我有以下示例数据集:
ID Number | Values
754321 0
754321 0
754321 0
754321 0
754321 1
754321 0
754321 1
754321 0
754321 2
754321 0
754329 3
754329 4
754329 5
754329 6
754329 7
754329 8
754329 9
ID Number
我想要输出“0”值连续出现次数的SQL 查询。因此,对于上表,我希望得到如下输出:
ID Number Count of Consecutive 0 Values
754321 4
解决方案
如果您运行的 MySQL 版本不支持窗口函数,则可以使用变量实现此功能:
SELECT `ID Number`, MAX(cnt) AS `Max Consecutive 0 Values`
FROM (SELECT `ID Number`, SUM(`Values` = 0) AS cnt
FROM (SELECT `ID Number`, `Values`,
@cnz:= CASE WHEN `Values` != 0 THEN @cnz + 1
ELSE @cnz
END AS cnz
FROM data
CROSS JOIN (SELECT @cnz := 0) init
ORDER BY date
) c
GROUP BY `ID Number`, cnz) s
GROUP BY `ID Number`
输出
ID Number Max Consecutive 0 Values
754321 4
754329 0
推荐阅读
- java - Presto JDBC 调用语句
- python - 在 for 循环中使用一个列表索引作为参考
- html - Flexbox 子节点收缩到某个点(但如果不需要,不要展开)
- python - 为什么带有相同前缀的标志的 python 3.8 的 argparse 对我来说失败了?
- r - 在 RStudio 中使用多个条件过滤“不等于”
- python - 从中获取代表文件的所有字节
- reactjs - 如何从装饰器函数中获取组件自己的道具
- amazon-web-services - 使用带通配符的同步命令在 aws s3 上上传文件夹/目录
- python - SQL 选择...在哪里...在;关于获取重复值(或解决方法)的任何想法
- declaration - 声明 subPropertyOf 时,我可以像限制 rdfs:range 一样限制 rdfs:domain 吗?