我有这个MySql查询:
SELECT YEAR(date), MONTHNAME(date), SUM(block_time)
FROM flights
WHERE operator = 'PSD'
GROUP BY YEAR(date), MONTH(date)
我遇到的问题是,如果一个月有零小时,它就不会出现在结果中。我需要更改什么才能看到所有月份是否有任何时间飞行?
答案 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)