我有這樣的MySQL查詢:MySQL的SUM(),按月分組,以「0」月不出現
SELECT YEAR(date), MONTHNAME(date), SUM(block_time)
FROM flights
WHERE operator = 'PSD'
GROUP BY YEAR(date), MONTH(date)
我遇到的問題是,如果一個月有零小時它不出現在結果中。爲了查看所有月份是否需要改變,我是否需要改變當月是否有空。
我有這樣的MySQL查詢:MySQL的SUM(),按月分組,以「0」月不出現
SELECT YEAR(date), MONTHNAME(date), SUM(block_time)
FROM flights
WHERE operator = 'PSD'
GROUP BY YEAR(date), MONTH(date)
我遇到的問題是,如果一個月有零小時它不出現在結果中。爲了查看所有月份是否需要改變,我是否需要改變當月是否有空。
您需要包括所有的年/月你想在你的結果的表格,並需要如下加入吧......
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
嘗試聯合與那些沒有時間
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)
我叫shenanigans。這可能是說月份與WHERE條款不符? – 2011-06-16 22:27:27
@pst - 我認爲這一點 - 對於'WHERE'子句,當月沒有任何航班,但月份(&年)仍應包含在結果集中,爲0小時。 – 2011-06-16 22:28:50
我想,你可以有一個月的表並加入它。我不確定這是不是一個好主意。 – marnir 2011-06-16 22:31:22