如何在行 return 为 null 时计数为 0

How to count 0 when row return null

我创建了 table,我想根据工作状态从中计算工作数量。

这是我用过的查询:

SELECT Workid, COUNT(*)
FROM WORK WHERE STATUS = 'awarded'
GROUP BY Workid

我得到的输出:

我想要的输出:

一种方法是条件聚合:

SELECT Workid, SUM(CASE WHEN STATUS = 'awarded' THEN 1 ELSE 0 END)
FROM WORK 
GROUP BY Workid;

这假设所有 WorkId 在 table 中至少有一行,无论状态如何。

您查询中的 WHERE 子句:

WHERE STATUS = 'awarded'

过滤掉您想要包含在结果中的所有这些行 0 在列 Count.

因此,您必须删除它并在 COUNT() 聚合函数中包含条件 STATUS = 'awarded'CASE 表达式:

SELECT Workid, 
       COUNT(CASE WHEN STATUS = 'awarded' THEN 1 END) AS Count
FROM WORK 
GROUP BY Workid;

这样,查询会聚合 table 的所有行,并且当特定 [=20= 的条件 STATUS = 'awarded' 不满足时,将 return 0 ].