可能重复:
COUNTIF的SQL等效项()
我可以在COUNT本身中加入某种过滤机制,我不想在查询的WHERE或JOIN中使用它(因为它是大型查询的一部分,其中还有其他列,我不想受到哪里的影响并加入条件).
例如,我可以在SUM中使用case
SUM(CASE WHEN work_status IN ('V','L') THEN shift_total_hours ELSE 0 END),
Run Code Online (Sandbox Code Playgroud)
我也可以在COUNT中执行类似的操作,这样我就可以只计算特定的行数了
这样的事情:
COUNT(CASE WHEN work_status IN ('V','L') THEN <should come in count> ELSE <exclude from count> END)
Run Code Online (Sandbox Code Playgroud)
非常感谢.
Mar*_*ith 20
你可以使用
COUNT(CASE WHEN work_status IN ('V','L') THEN 1 END)
Run Code Online (Sandbox Code Playgroud)
对于与指定条件不匹配的行,CASE表达式返回NULL并COUNT仅计算NOT NULL值
这应该做你想要的:
SUM(CASE WHEN work_status IN ('V','L') THEN 1 ELSE 0 END)
Run Code Online (Sandbox Code Playgroud)
虽然它使用SUM聚合函数,但它实际上是一个条件计数,因为对于每一行,您要在总和中添加1或0.
| 归档时间: |
|
| 查看次数: |
16902 次 |
| 最近记录: |