【发布时间】:2019-05-29 16:07:32
【问题描述】:
我对 PostgreSQL 完全陌生。我有一个名为 my_table 的表:
a b c date
1 0 good 2019-05-02
0 1 good 2019-05-02
1 1 bad 2019-05-02
1 1 good 2019-05-02
1 0 bad 2019-05-01
0 1 good 2019-05-01
1 1 bad 2019-05-01
0 0 bad 2019-05-01
我想计算每个日期 c 列中“好”的百分比。我知道如何获得“好”的数量:
SELECT COUNT(c), date FROM my_table WHERE c != 'bad' GROUP BY date;
返回:
count date
3 2019-05-02
1 2019-05-01
我的目标是得到这个:
date perc_good
2019-05-02 25
2019-05-01 75
所以我尝试了以下方法:
SELECT date,
(SELECT COUNT(c)
FROM my_table
WHERE c != 'bad'
GROUP BY date) / COUNT(c) * 100 as perc_good
FROM my_table
GROUP BY date;
我得到一个错误提示
用作表达式的子查询返回多行。
我找到了这个答案,但不确定如何或是否适用于我的案例:
Calculating percentage in PostgreSql
如何计算多行的百分比?
【问题讨论】:
标签: sql postgresql group-by