[英]PHP, MySQL. Min and max value day, month and year
編輯以澄清:
這是我的桌子:
ID Datetime Date Temp
6043 2016-05-24 10:20:00 2016-05-24 19.3
6042 2016-05-24 10:15:00 2016-05-24 19.1
6041 2016-05-24 10:10:00 2016-05-24 19.1
6040 2016-05-24 10:05:00 2016-05-24 19.1
我想做的是選擇具有最高“溫度”的行。
這是我的查詢:
SELECT max(temp) as maxtemp FROM weatherdata WHERE day(date) = 24
該查詢僅給我最大溫度,如何獲取ID和日期時間?
目標是獲取表格中每一天的最大值(WHERE day(date)= xx)
親切的問候
在我看來,您正在嘗試獲取包含任何給定月份最高溫度的觀測的整個weatherdata
觀測行。
您已經意識到,這需要兩個步驟。 第一步:找到每個月最高的溫度觀測值。 您可以這樣操作:
SELECT MAX(temp) temp, LAST_DAY(`datetime`) month_ending
FROM weatherdata
GROUP BY LAST_DAY(`datetime`)
這里的技巧是使用LAST_DAY()
來確定每個觀察發生在哪個月。 它采用任何日期,日期時間或時間戳項,並計算出該月最后一天的日期。 該查詢為您提供了一個結果集,該結果集每月包含一個臨時表,該月中的最高臨時表。 試試吧。 確保它適合您。
接下來,應將其加入到詳細的觀察表中,如下所示:
SELECT w.*
FROM weatherdata w
JOIN (
SELECT MAX(temp) temp, LAST_DAY(`datetime`) month_ending
FROM weatherdata
GROUP BY LAST_DAY(`datetime`)
) m ON w.temp = m.temp
AND LAST_DAY(w.`datetime`) = m.month_ending
ORDER BY w.`datetime`
這將為您提供詳細的觀察。 請注意,如果在任何給定的月份中有多個觀測值都出現了最高溫度,您將全部獲得。
最后,如果只需要幾個月的時間,請將此WHERE子句放在ORDER BY子句之前
WHERE `datetime` >= '2016-04-01
AND `datetime` < '2016-05-01 -- to get April 2016
專家提示:不要將數據類型的名稱(如datetime
)用作列名。 這使得很難對數據庫進行故障排除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.