我正在设置一个图表,显示每个员工每月的新契约(Contract)数量。我的表中不是每个月都有记录,如何为没有记录的月份的每个员工显示 0 作为契约(Contract)计数?
SELECT EmployeeName, SUM(contract) as nbcontract
FROM table
WHERE month(Date) = month(now())
group by EmployeeName
当月(现在)没有记录时的当前结果:
EmployeeName|nbcontract
预期结果:
EmployeeName|nbcontract
employee1 0
employee2 0
employee3 0
...
其中 EmployeeName 显示 EmployeeName 所有可能的不同值
任何提示将不胜感激!
最佳答案
使用条件聚合:
SELECT
EmployeeName,
SUM(CASE WHEN MONTH(date) = MONTH(NOW()) THEN contract ELSE 0 END) AS nbcontract
FROM yourTable
GROUP BY
EmployeeName;
这种方法将保证每个员工都会出现在结果集中,即使他当月没有契约(Contract)。
关于mysql - 如果没有日期记录如何处理where Date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56899650/