MySQL使用GROUP BY分组SUM求和时查询结果不符合预期
问题原因
- 你需要求和的
no_of_tp_assigned、no_of_thd_assigned两个字段未添加SUM聚合函数,直接放在了SELECT查询列表中。 - MySQL的GROUP BY逻辑要求:所有未出现在GROUP BY子句中的非聚合字段,必须使用聚合函数包裹。如果未遵循该规则,在关闭
ONLY_FULL_GROUP_BY校验的宽松模式下,会随机返回分组内某一条记录的对应字段值,你得到的就是分组内首行的no_of_tp_assigned、no_of_thd_assigned值,而非全部分组记录的求和结果。
解决方案
将所有需要求和的字段全部添加SUM聚合函数,调整后的查询语句如下:
SELECT vtt.trai_name, vtt.trainer_province, SUM(vtt.no_of_tp_assigned) AS no_of_tp_assigned, SUM(vtt.no_of_thd_assigned) AS no_of_thd_assigned, SUM(vtt.total_training_count) AS total_training_count, SUM(vtt.total_amount) AS total_amount FROM v_test_tt vtt GROUP BY vtt.trai_name, vtt.trainer_province
内容的提问来源于stack exchange,提问作者Adil Riaz
相关产品推荐
相关产品推荐

