此问题在此处已有答案:
postgresql - sql - count of true
values(11个回答)
16天前关闭
我试图计算返回的行数,另外我想计算布尔条件的出现次数。例如:
SELECT COUNT(1), COUNT(field > 42)
FROM some_table
WHERE some_other_conditions
字符串
然而,上面的查询不起作用,因为布尔条件field > 42
的计算结果为false,这仍然是计数的。我可以将查询重写为这样,这确实有效:
SELECT COUNT(1), COUNT(CASE WHEN field > 42 THEN true END)
FROM some_table
WHERE some_other_conditions
型
我在这里所做的是利用CASE
中缺少的ELSE
子句来默认为NULL
值-这不被计算在内。注意:上面的查询只是示例,真实的查询在select,joins,group by和order by子句上有额外的字段。COUNT(CASE ...
的语法相当复杂,有没有更简洁的方法来表达相同的概念?
1条答案
按热度按时间0x6upsns1#
可以使用
SUM
代替COUNT
:字符串
或者更适当地为
FILTER
:型