假设我有一个表mytable,其中包含id、numericvalue和utctimestamp列。我试图将表mytable的结果按时间戳的小时分组,并返回每个组与其关联的时间戳对应的最大numericvalue以及每个组与其关联的时间戳对应的最小numericvalue。
现在,我可以通过以下查询实现问题的第一部分:
SELECT
HOUR(t.UTCTimestamp) AS `Hour`,
t.NumericValue AS MaximumValue,
t.UTCTimestamp AS MaximumValueTime
FROM MyTable t
INNER JOIN (
SELECT HOUR(t2.UTCTimestamp) AS `Hour`, MAX(t2.NumericValue) AS NumericValue
FROM MyTable t2
GROUP BY HOUR(t2.UTCTimestamp)
) maxNumericValue ON HOUR(t.UTCTimestamp) = maxNumericValue.`Hour` AND t.NumericValue = maxNumericValue.NumericValue
GROUP BY HOUR(t.UTCTimestamp);
这个答案启发了我们。
这是mvce。
如何显示每个组的最小值以及与之相关联的时间戳?
3条答案
按热度按时间pxq42qpu1#
可以两次联接到mytable(并且只能使用一个聚合子查询)
ukqbszuj2#
采用相同的技术,但至少:
6bc51xsx3#
从mysql 8.0开始,您可以使用
ROW_NUMBER
:dbfiddle演示