我如何计算具有特定值的列 - 但将其作为总计。
表数据:
Code No
1 *
2 -
3 4
4
例如,如果我想计算有多少行有*和 - 和空格
我能做到
Case when No = '*'
Then COUNT(No)
when No = '-' then count(No)
when No = '' then count(No)
else 0 end as 'Count'
但这会返回4
http://sqlfiddle.com/#!9/f73409/4
我希望这返回3
任何帮助将不胜感激
答案 0 :(得分:4)
答案 1 :(得分:0)
标准SQL具有以下特定功能:聚合后面的filter
子句。
不幸的是,它得到的支持不是很广泛(主要是PostgreSQL)。
但是使用case
有一个简单的解决方法:
COUNT(CASE WHEN <condition> THEN 1 END)
这是有效的,因为else null
的隐含case
条款以及count
null
不计算filter
。
有关{{1}}子句以及模仿方法的更多信息:http://modern-sql.com/feature/filter