SQL需求:Type=1时按Level关联ID汇总Value总和
SQL需求解决方案
原数据表
| ID | Level | Type | Value |
|---|---|---|---|
| A | ZZ | 1 | 20 |
| A | YY | 1 | 10 |
| C | XX | 1 | 30 |
| B | ZZ | 1 | 40 |
| B | XX | 1 | 60 |
| C | YY | 1 | 100 |
| D | WW | 2 | 70 |
| D | VV | 2 | 90 |
需求
当Type=1时,对每个Level,汇总所有包含该Level的ID对应的全部Value值(即使Value未直接关联该Level)。Type=2的Level(WW、VV)不纳入统计。
预期结果
| Level | Value |
|---|---|
| ZZ | 130 |
| YY | 160 |
| XX | 230 |
计算说明
- Level ZZ:汇总ID A和B的所有Value,合计130
- Level YY:汇总ID A和C的所有Value,合计160
- Level XX:汇总ID B和C的所有Value,合计230
- Type=2的Level(WW、VV)不纳入统计
解决SQL
SELECT t1.Level, SUM(t2.Value) AS Value FROM your_table t1 INNER JOIN your_table t2 ON t1.ID = t2.ID WHERE t1.Type = 1 AND t2.Type = 1 GROUP BY t1.Level ORDER BY t1.Level DESC;
逻辑说明
- 利用自连接,将每个
Type=1的Level记录关联到其对应ID下所有Type=1的Value记录。 - 按Level分组后,对关联到的所有Value求和,得到每个Level对应的总Value。
- 通过WHERE条件过滤掉Type=2的记录,确保只统计目标数据。
内容的提问来源于stack exchange,提问作者user26259727
相关产品推荐
相关产品推荐

