SQL做分组数值乘法时报group by聚合错误的问题求助
问题原因
你写的查询存在两处错误:
- 子查询中用
count(*)统计的是每个分类的行数,不是value字段的总和,不符合需求 - 外层查询冗余的
group by 1语句:子查询已经按let_sub_area分组,和table2关联后每个区域仅对应一条结果,不需要再次分组,额外的分组会触发聚合规则校验错误
正确查询语句
select t2.sub_area, t1.total * t2.percentage as percent_share from table2 as t2 join ( select let_sub_area, sum(value) as total from table1 group by let_sub_area ) as t1 on t1.let_sub_area = t2.sub_area order by 2
结果验证
- L1分类
value总和:2500 + 500 = 3000,乘以对应百分比0.05得到结果150 - L2分类
value总和:250 + 400 = 650,乘以对应百分比0.1得到结果65
和你期望的输出完全一致。
内容的提问来源于stack exchange,提问作者SQL_New_bee
相关产品推荐
相关产品推荐

