我有以下查询:
SELECT e.employeeName, DATE_FORMAT(`maintenanceDate`, "%M %Y") AS
Month,count(`maintenanceID`) AS Total
FROM `maintenance` m join employee e
on m.employeeID =e.employeeID
group by month,e.employeeID
生成像这样的结果
employeeName Month Total
Big Apr-15 2
Bar Dec-14 1
Big Dec-14 1
我是否可以知道如何改进,以便查询在每个特定月份没有计数的员工中显示总计0? 例如:2015年4月酒吧总数为0
答案 0 :(得分:0)
您需要生成所有员工和月份的列表,然后引入您想要计算的数据。完整列表使用cross join
。然后使用left join
获取其余数据:
select e.employeeName, mon.Month, count(m.maintenanceID) AS Total
from employee e cross join
(select distinct date_format(maintenanceDate, '%M %Y') as month
from maintenance
) mon left join
maintenance m
on m.employeeID = e.employeeID and
date_format(m.maintenanceDate, '%M %Y') = mon.month
group by m.month, e.employeeID;