我有2个查询使用相同的表:总计,我需要评估结果的百分比。 (Postgres 9.4)
SELECT COUNT(*) FROM total
SELECT COUNT(*) FROM total WHERE field1 = False
示例:
我需要得到10%,这意味着满足特定条件的百分比。 100/10 在SQL中计算这个条件的最佳方法是什么?
SELECT * FROM (
SELECT COUNT(*) FROM total /
SELECT COUNT(*) FROM total WHERE field1 = False )
答案 0 :(得分:2)
SELECT COUNT(CASE
WHEN field1=false THEN 1
END) / COUNT(*)*100 AS percentage
FROM table
您可以使用案例表达式
来使用条件聚合答案 1 :(得分:2)
我会这样做:
select avg(case when field = false then 100.0 else 0 end) as percentage
from total;
假设field
不是NULL
,您也可以这样做:
select avg( (not field)::int ) * 100 as percentage
from total;
答案 2 :(得分:1)
如果field1
列为BOOLEN
类型,则还有另一种很酷的方式
您可以使用SUM
这样的功能。
SELECT SUM((NOT field1)::INT) * 100/SUM(1) percentage
FROM total
sqlfiddle:http://sqlfiddle.com/#!15/eb9fd1/21