如何对相同id_skill的level_paid字段求和?SQL查询问题
问题解决
原始数据
| id_skill | user | level_paid |
|---|---|---|
| 100 | Red | 1 |
| 100 | Red | 1 |
| 200 | Red | 2 |
| 200 | Red | 1 |
期望结果
仅统计id_skill对应记录数大于1的分组,计算该分组level_paid的总和:
| id_skill | user | level_paid |
|---|---|---|
| 100 | Red | 2 |
| 200 | Red | 3 |
当前SQL的问题
- SELECT列表缺少
id_skill和user字段,无法匹配期望输出的列结构 - 未添加过滤条件,会错误包含记录数为1的
id_skill分组(若存在)
修正后的SQL
SELECT id_skill, user, SUM(level_paid) AS level_paid FROM reference WHERE user = 'Red' GROUP BY id_skill, user HAVING COUNT(*) > 1;
关键说明
GROUP BY id_skill, user:按技能ID和用户维度分组,保证分组逻辑严谨(即使后续取消用户查询限制也能正常工作)HAVING COUNT(*) > 1:精准过滤出记录数大于1的分组,匹配需求SUM(level_paid) AS level_paid:将计算得到的总和命名为期望的level_paid列名
内容的提问来源于stack exchange,提问作者Weamar
相关产品推荐
相关产品推荐

