在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,但这需要额外的子查询。也许还有别的选择?
ni65a41a1#
使用聚合和算术。假设 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
1条答案
按热度按时间ni65a41a1#
使用聚合和算术。假设
0
/1
第二列中的值:有些数据库执行整数除法,因此如果列是整数,则可能需要:
那么,就不需要使用派生表了。可以转到基表并使用公式进行聚合: