mysql - SQL 查询 - 找出一行从 0 变为另一个值的次数
问题描述
我正在使用 MySQL 8,需要创建一个存储过程
我有一个表,它有一个 DATE 字段和一个可以是 0 或任何其他数字的值字段。此值字段表示当天的每日降雨量。该表存储今天到 10 年之间的数据。
我需要找出未来 10 年会有多少次降雨。
因此,例如,如果我的表包含以下数据:
Date - Value
2018-06-09 - 0
2018-06-10 - 50
2018-06-11 - 0
2018-06-12 - 15
2018-06-13 - 17
2018-06-14 - 0
2018-06-15 - 0
2018-06-16 - 12
2018-06-17 - 123
2018-06-18 - 17
然后 SP 应该返回 3,因为有 3 次下雨。任何让我更接近答案的帮助将不胜感激!
解决方案
使用MySQL 连接:
SELECT COUNT(*) Number_of_Periods
FROM yourTable A JOIN yourTable B
ON DATE(A.`DATE`)=DATE(B.`DATE` - INTERVAL 1 DAY)
AND A.`VALUE`=0 AND B.`VALUE`>0;
请参阅DB Fiddle 上的演示。
推荐阅读
- python - 无法理解 python sankey plot,以及源/目标如何工作
- sql-server - 如何在 Visual Studio 中为桌面应用程序创建带有水晶报表或 ms-reports 的设置
- javascript - JavaScript 中的传播操作符有什么意义,尤其是在这个例子中?
- angular - 重命名 Angular 指令,例如 *ngFor 或自定义指令
- c# - Angular 反应式表单自定义远程验证
- ruby-on-rails - PG::ConnectionBad: 无法连接到服务器:没有这样的文件或目录 | Rails 6 无法连接到 AWS Elastic Beanstalk RDS
- pandas - 根据月初和月底过滤数据
- sql - SQL 更新多个表中的值
- laravel - Laravel 护照登录 CSRF 令牌在 Postman 中不匹配
- javascript - TS with Redux Slices: valueService.js:205 Uncaught TypeError: Cannot assign to read only property 'dis' of object '#