如何在行 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
].
我创建了 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
].