我正在建立一个图表,显示每个员工每月的新合同数量。不是每个月都记录在我的表中,如何将0记录为每个月没有记录的每个员工的合同数?

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;


这种方法将保证即使每个员工在当月没有合同,他也将出现在结果集中。

关于mysql - 如果没有日期记录,如何处理日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56899650/

10-12 02:32