首页 > 解决方案 > 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

解决方案


使用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 上的演示


推荐阅读