我通过用户投票进行了民意调查。例如:
您想要菲亚特吗?
id | answer
1 yes
2 no
3 yes
...
25 no
count = 20 yes / 5 no
(20 * 100) /25 = 80% Yes
(5 * 100) /25 = 20% No
因此,80%的人想要菲亚特,20%的人不想要。显然,我可以执行以下操作:
select answer, count(*) as total from fast_survey group by answer;
但是,这将显示计数,我正在寻找相对百分比。知道我该怎么做吗?
SELECT round(count(*) FILTER (WHERE answer) * 100.0 / count(*), 2) AS pct_yes
, round(count(*) FILTER (WHERE NOT answer) * 100.0 / count(*), 2) AS pct_no
FROM fast_survey;
pct_yes | pct_no -------- + ------- 80.00 | 20.00
db <>在这里拨弄
我乘以100.0
(not )以避免整数除法。结果是可以馈入进行美化的类型。看到: 100
numeric
round()
假设answer
是boolean
。否则,请适应。
聚合FILTER
子句已在Postgres 9.4中引入。看到:
应该尽可能快。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句