我有以下查询:
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
最佳答案
您需要生成所有员工和月份的列表,然后引入您想要计数的数据。完整列表使用交叉连接
。然后使用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;
关于mysql - 如果计数为 0,则显示 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188834/