mysql - 如果计数为 0,则显示 Null

标签 mysql null

我有以下查询:

 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/

相关文章:

php - 如何防止 MySQL 使用空字符串更新列?

java - Mysql 表对象列表到字符串数组通过 System.arraycopy 得到 ArrayStoreException?

mysql - 设置在 MySQL 进程列表中显示的程序名称

sql - 在稀疏表中选择一行第一个非空值

Django DateField 不允许为 null

sql - 值为 NULL 的列会影响 Microsoft SQL Server 的性能吗?

MySQL group by get value 首选项为 null

mysql - Gitlab CI 运行器 |自定义 mysql 配置文件

c++ - 无效的空指针 - C++ - VS2010

oracle - Oracle 列上的 HQL "is null"和 "!= null"