MySql SUM(),按月分组,月份为'0'不会出现

时间:2011-06-16 22:23:41

标签: mysql date group-by sum

我有这个MySql查询:

SELECT YEAR(date), MONTHNAME(date), SUM(block_time)
FROM flights
WHERE operator = 'PSD'
GROUP BY YEAR(date), MONTH(date)

我遇到的问题是,如果一个月有零小时,它就不会出现在结果中。我需要更改什么才能看到所有月份是否有任何时间飞行?

2 个答案:

答案 0 :(得分:1)

您需要一张表格,其中包含您在结果中所需的所有年/月,并且需要加入以下内容...

SELECT myMonths.theYear, myMonths.theMonth, COALESCE(theData.hours, 0)
FROM myMonths
LEFT JOIN (
    SELECT YEAR(date) AS theYear, MONTHNAME(date) AS theMonth, SUM(block_time) AS hours
    FROM flights
    WHERE operator = 'PSD'
    GROUP BY YEAR(date), MONTHNAME(date)
) theData
ON myMonths.theYear = theData.theYear
AND myMonths.theMonth = theData.theMonth

答案 1 :(得分:0)

尝试与那些没有时间的人联合

SELECT YEAR(date), MONTHNAME(date), SUM(block_time)
FROM flights
WHERE operator = 'PSD'
GROUP BY YEAR(date), MONTH(date)

UNION ALL 

SELECT YEAR(date), MONTHNAME(date), SUM(block_time)
FROM flights
WHERE hours = 0
GROUP BY YEAR(date), MONTH(date)