2
我試圖在上面和其他論壇中找到上述答案。MySQL獲取最小/最大值以及按小時,天,月等分組的相應日期/時間字段
給定一個表valuetable
- ID:somevalues:DATE_TIME
- 1:50:2012年10月5日十三點00分00秒
- 2:45:2012年10月5日13: 15:00
- 3:35:2012年10月5日13時20分○○秒
- 4:20:2012年10月5日15:00:00
- 5:45:2012年10月5日15 :25:00
- 6:35:2012-10-05 15:35:00
等等,您如何查找最小值和最大值以及按小時,天,月等分組的相應日期和時間。
這裏的問題是,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;
查詢應輸出這裏,
- MINHOUR | MINVALUES | MINDATETIME | MAXHOUR | MAXVALUES | MAXDATETIME
- 13 | 35 | 2012-10-05 13:20:00 | 13 | 50 | 2012-10-05 13:00:00
- 15 | 20 | 2012-10-05 15:00:00 | 15 | 45 | 2012-10-05 15:25:00
請讓我知道是否我錯過了任何東西,或者如果有更好的方法做到這一點。
據我瞭解,查詢同樣可以白天使用組,一個月等