mysql - 如果没有日期记录如何处理where Date

标签 mysql

我正在设置一个图表,显示每个员工每月的新契约(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/

相关文章:

php - 将记录插入mysql echo表?

mysql - 将数据从一个表插入到另一个表?

c# - 如何在 Ubuntu 上为 Asp.Net 5.0 安装 MySql 包?

mysql - 使用 Entity Framework 从数据库中获取标识列中最后一个自动插入的 ID

MySQL奇怪的FK错误

php - Symfony 2.3.7 查询结果中的表单值

php - mysql 表中仍然有重复值

MYSQL 初学者 ORDER By - 只需要列中每个条目的最大值

MySql 8.0分区插件启用失败

mysql - mysql如何处理不存在的索引值?