因此,我对SQL非常陌生,可能没有准确描述我想做的事情。我有一个包含三列的表,我想按一个列分组,然后在另一列中查看每个组的百分比具有特定值。例如在表中:

id   col1  col2
----------------
0       A     1
1       A     2
2       B     2
3       B     2
4       A     1


我想按col1分组,看看每个组(AB)在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/

10-12 12:46
查看更多