mysql – 使用SQL查找零值之间的局部最大值

我有一张桌子,上面有来自物联网设备的每分钟数据.每分钟都有一个新行,其中包含时间戳和表示度量标准的值.度量标准从0开始,并在重置和重新开始之前递增一段时间.

当我绘制它时,它看起来像图片.我想找到每次运行的局部最大值,如蓝色圆圈所示.

是否可以查找和分组度量标准所在的连续行? 0然后找到每组的最大值?

《mysql – 使用SQL查找零值之间的局部最大值》

更新

表结构:

+-------------+------------------+
| Field       | Type             |
+-------------+------------------+
| id          | int(10) unsigned |
| timestamp   | timestamp        |
| metric_name | varchar(32)      |
| value       | int(10)          |
+-------------+------------------+

最佳答案 这基于以下假设:

> Id是一个完美的顺序整数(没有间隙)
>您希望在0值之前直接记录值

码:

SELECT *
  FROM metrics m1
 WHERE m.id IN (    
   SELECT m2.id - 1
     FROM metrics m2
    WHERE m1.value = 0)
点赞