合并pivot表以计算比率

x759pob2  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(425)

在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之和。然后将1除以total count,但这需要额外的子查询。也许还有别的选择?

ni65a41a

ni65a41a1#

使用聚合和算术。假设 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

相关问题