如何在mysql中显示每个最大值?

时间:2011-05-17 07:52:33

标签: mysql max

我有多个具有不同时间戳的值,如下所示:

10   01:01:00
20   01:35:00
30   02:10:00
05   02:45:00
12   03:05:00
21   03:30:00
10   04:06:00
40   05:15:00

我没有可以分组的列并找到最大值。我想获取最大值如30,21和40的记录。数据总是采用这种格式,比如值增加,然后再从零开始。什么查询可以帮助我找到这些记录?


为了澄清,它按时间戳排序,我想得到局部最大值的时间戳,下一行的值较小的行:

value    tmstmp
-----   --------
 10     01:01:00
 20     01:35:00
 30     02:10:00  <-- this one since next value is 5 (< 30).

 05     02:45:00
 12     03:05:00
 21     03:30:00  <-- this one since next value is 10 (< 21).

 10     04:06:00
 40     05:15:00  <-- this one since next value is 40 (< infinity).

2 个答案:

答案 0 :(得分:0)

不知何故,你的问题对我来说并不清楚。 假设第一列名称为“value”,第二列名称为“timestamp”。

按时间戳从组中选择最大值(值)。

答案 1 :(得分:0)

这个答案可能有点迟,但我认为我找到了解决方案

SELECT * FROM temp t1 WHERE value > 
  IFNULL(
    (SELECT value FROM temp t2
    WHERE t2.tmstmp > t1.tmstmp ORDER BY t2.tmstmp ASC limit 1),
   -1
  ) 
ORDER BY tmstmp ASC

澄清: 我找到值大于行中下一个值的值。 为了得到最终值,我在子查询周围添加了一个IFNULL,以确保子查询将返回-1

我看到的唯一问题是时间到了第二天,这就是为什么我希望你也可以附上一个日期。

希望这仍然有助于其他人