因此,我对SQL非常陌生,可能没有准确描述我想做的事情。我有一个包含三列的表,我想按一个列分组,然后在另一列中查看每个组的百分比具有特定值。例如在表中:
id col1 col2
----------------
0 A 1
1 A 2
2 B 2
3 B 2
4 A 1
我想按
col1
分组,看看每个组(A
或B
)在col2
中的值为1的百分比。我想要的结果是:col1 percentage_col2_equals_1
------------------------------
A 66.7
B 0.0
到目前为止,我有:
SELECT col1,
((SELECT COUNT(*) FROM my_table
WHERE col2 = 1
GROUP BY col1) /
(SELECT COUNT(*) FROM my_table
GROUP BY col1) * 100)
FROM my_table
GROUP BY col1;
但这是行不通的。任何帮助,将不胜感激!
最佳答案
使用case when
SELECT col1,(coalesce(count(case when col2=1 then col2 end),0)*100.00)/count(*)
from tablename
group by col1
关于sql - 有没有一种方法可以对SQL中的组执行操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55720542/