2016-03-07 47 views
0

,所以我有100的的數千行的,像這樣的表:MySQL的平均每24小時1個月

+--+----------+-------------------+ 
|ID|metervalue |datetime   | 
|1 |10  |2016-02-23 01:00 | 
|2 |20  |2016-02-23 02:00 | 
|3 |5   |2016-02-23 03:00 | 
|... |...  |...    | 
|x |x   |2016-02-24 01:00 | 
|x |x   |2016-02-24 02:00 | 
|x |x   |2016-02-24 03:00 | 
|... |...  |...    | 
|x |x   |2016-03-01 01:00 | 
|x |x   |2016-03-01 02:00 | 
|x |x   |2016-03-01 03:00 | 
+--+----------+-------------------+ 

因此,有采取每隔一小時多,很多天有些抄表。

現在我需要獲取圖形的數據。小時圖數據很簡單,因爲我可以按原樣查詢數據,但對於「每月」數據,我需要從一個月的持續時間查詢所有行,以便每24小時平均爲一行。

所以30行中的一行(假設月份有30天)應該包含24小時平均爲1天。

我試過這個解決方案,但我會想它的工作沒有奏效:Average of data for every 5 minutes in the given times

我不認爲GROUP BY在這個問題的答案,例如工作,因爲我不想平均,比如說,每天每五小時,但我想平均每天的24小時來彌補一天。

+3

GROUP BY DATE(日期時間)? – Strawberry

回答

1

你仍然會GROUP BY,但你做什麼用其無視數據的時間部分,像這樣的DATE()函數返回:

SELECT DATE(a.datetime), AVG(a.metervalue) 
FROM MyInterestingTable a 
GROUP BY DATE(a.datetime) 
+0

DATE函數與DAY函數不同,它似乎不起作用? – Piwwoli

+0

根據每個文檔它返回一個月的數字日期,例如:DAY(2016-02-24)返回24. DAY(2011-05-24)也返回24.正如你所看到的,這不是你想要描述的場景。在這種情況下,DATE()只會刪除時間部分,這正是您想要的。 –

+0

啊!所以這就是問題所在,幾個月和幾年被DAY功能所忽視!謝啦! – Piwwoli