我试图在这里和其他论坛找到上述答案。
给出一个有价值的表格
等等,您如何找到最小值和最大值以及按小时,日,月等分组的相应日期和时间。
这里的问题是SQL组中的GROUP只有小时和IN MYSQL,它将返回集合或表中出现的第一个日期时间。我知道其他RDBMS的实现方式不同。因此,我使用ORDER BY来首先对表进行排序,这样当我们运行查询时,值按升序和降序排序,对应于最小和最大查询,这样当我们选择每小时的最小值和最大值时,第一个日期 - 查询选择的时间是与最小值或最大值相关的时间。
下面给出了每小时拉出最小值和最大值的查询,
SELECT
*
FROM(
SELECT
HOUR(DATE_TIME) AS MINHOUR,
MIN(SOMEVALUES) AS MINVALUES,
DATE_TIME AS MINDATETIME FROM (SELECT * FROM VALUETABLE
WHERE DATE_TIME>'2012-10-05 00:00:00'
AND DATE_TIME<'2012-10-05 23:59:59'
ORDER BY SOMEVALUES
) AS TEMPT1
GROUP BY HOUR(DATE_TIME)
) AS MINVALTABLE
LEFT JOIN (
SELECT
HOUR(DATE_TIME) AS MAXHOUR,
MAX(SOMEVALUES) AS MAXVALUES,
DATE_TIME AS MAXDATETIME FROM
(
SELECT
*
FROM VALUETABLE
WHERE DATE_TIME>'2012-10-05 00:00:00'
AND DATE_TIME<'2012-10-05 23:59:59'
ORDER BY SOMEVALUES DESC
) AS TEMPT2
GROUP BY HOUR(DATE_TIME)) AS MAXVALTABLE
ON MINVALTABLE.MINHOUR=MAXVALTABLE.MAXHOUR;
查询应该按此处输出,
请告诉我,如果我错过了什么,或者是否有更好的方法可以做到这一点。
据我了解,查询可以类似地用于按天,月等分组。
答案 0 :(得分:0)
尝试此查询以获得最大值
SELECT
t.id,
DATE_FORMAT(lt.datetime, '%H') as Hour,
DATE_FORMAT(lt.datetime, '%d') as Day,
DATE_FORMAT(lt.datetime, '%m') as Month
FROM table as t
LEFT JOIN (SELECT MAX(id),datetime FROM table) as lt ON lt.id = t.id
GROUP BY Month , Day , Hour
如果不是您想要的,请清除您的问题