MySQL如何按组汇总分数?组可存在于两列中
跨两列分组汇总分数的解决方案
要实现所有组(无论在groupname1还是groupname2列中)的分数总和统计,你可以通过合并两列的组数据再分组求和的方式实现,具体SQL语句如下:
SELECT `group`, SUM(score) AS total FROM ( -- 取出groupname1列的组及对应分数 SELECT groupname1 AS `group`, score FROM attendants UNION ALL -- 取出groupname2列的组及对应分数 SELECT groupname2 AS `group`, score FROM attendants ) AS combined_groups GROUP BY `group` ORDER BY `group`;
语句说明:
- 内层子查询通过
UNION ALL合并两列数据:将groupname1和groupname2统一映射为group列,同时保留对应的score值,确保所有出现过的组都被纳入统计范围。 - 外层查询对合并后的
group列分组,用SUM(score)计算每个组的总分,ORDER BY可以让结果按组名有序排列,和你需要的输出格式完全匹配。
执行这条语句后,会得到如下结果:
| group | total |
|---|---|
| GROUPA | 40 |
| GROUPB | 60 |
| GROUPC | 50 |
| GROUPD | 30 |
内容的提问来源于stack exchange,提问作者Erwin
相关产品推荐
相关产品推荐

