在SQL上,我有一个数据透视表,例如:
col1 col2 col3
A 0 90
A 1 10
B 0 80
B 1 20
我想要以下内容:
col1 ratio
A 90%
B 80%
我想到的唯一方法是计算每个col1值的1和0之和。然后将1s的数量除以总计数,但这需要其他子查询。也许还有其他选择吗?
答案 0 :(得分:1)
使用聚合和算术。假设第二列中有0
/ 1
个值:
select col1, sum(col2 * col3) / sum(col3)
from t
group by col1;
某些数据库进行整数除法,因此,如果列是整数,则可能需要:
select col1, sum(col2 * col3) * 1.0 / sum(col3)
然后,您不需要使用派生表。您可以转到基表并使用公式进行汇总:
select col1, avg(col3 * 1.0)
from base
group by col1