MySQL:具有多个GROUP BY的COUNT

时间:2013-03-30 11:03:44

标签: mysql count group-by

我有一张表以5分钟的间隔存储气象数据。

现在我需要按年份分组的总rainday结果如下:。

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

2 个答案:

答案 0 :(得分:1)

您可以按年份(日期)进行分组,以按年份分组雨水。然后使用DATE(日期)函数计算可以在没有时间部分的情况下COUNT DISTINCT的天数。

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

请参阅小提琴here

答案 1 :(得分: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