2013-03-30 60 views
1

我有一個表格,以5分鐘的間隔存儲天氣數據。MySQL:COUNT與多個GROUP BY

現在我需要結果按照年份分組按照這個:

2010 100 raindays 
2011 120 raindays 
2013 90 raindays 

這是我當前的查詢:

SELECT date, SUM(rain) FROM $tableName GROUP BY date HAVING SUM(rain) > 0"; 

如預期,這給了我下面的結果:

2010-01-02 1.2 (mm) 
2010-01-05 1.6 (mm) 
2010-02-10 2.6 (mm) 

我如何改變我的查詢,有逐年這個分組(日期)並計算幾天?

感謝所有您的幫助

PM

+0

來吧,你能做到這一點 – Strawberry

回答

1

您可以通過YEAR(日期)組,總結逐年分組的雨。然後,通過使用DATE(日期)函數來計算在沒有時間部分的情況下COUNT DISTINCT的天數。

SELECT YEAR(date), SUM(rain), COUNT(DISTINCT DATE(date)) days 
FROM $tableName 
WHERE rain>0 
GROUP BY YEAR(date) 

請參閱小提琴here

+0

謝謝。這對我來說很完美。 – user2226900

0

,如果你想找到最大元素下面的查詢可以幫助你爲每個組,

select 
    e.date, e.rain 
from 
    TableName e 
     join 
    (select 
     date, MAX(rain) MS 
    from 
     TableName 
    group by date 
    Having rain > 0) m ON e.date = M.date and e.rain = m.rain 
+0

感謝您的回答。我會盡我所能去理解這一點。 (目前我沒有;) – user2226900