我有多个具有不同时间戳的值,如下所示:
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).
答案 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
我看到的唯一问题是时间到了第二天,这就是为什么我希望你也可以附上一个日期。
希望这仍然有助于其他人