假设我有以下数据:
id PGroup Number
103 AAA 9946
103 BBB 8847
103 CCC 7260
103 DDD 1531
103 EEE 473
103 FFF 106
111 BBB 15353
111 AAA 15243
111 CCC 7615
111 DDD 2111
111 EEE 930
111 GGG 807
111 HHH 123
113 BBB 15585
113 AAA 12714
113 CCC 4343
113 DDD 2561
113 EEE 1063
113 GGG 406
113 HHH 69
123 AAA 11448
123 BBB 9560
对于每个ID,我想获得AAA + BBB的总和。这是一个可查询的吗?
103 AAA+BBB 18793
103 CCC 7260
103 DDD 1531
103 EEE 473
103 FFF 106
111 AAA+BBB 30596
111 CCC 7615
111 DDD 2111
111 EEE 930
111 GGG 807
111 HHH 123
答案 0 :(得分:1)
GROUP_CONCAT
允许您执行类似的操作,如果您接受遗漏PGroup
不是'AAA'
或'BBB'
的行:
SELECT
id,
GROUP_CONCAT(PGroup SEPARATOR '+'),
SUM(Number)
FORM tbl
WHERE PGroup IN ('AAA', 'BBB')
GROUP BY id
答案 1 :(得分:1)
您可以使用CASE
语句将AAA和BBB值组合成一行,如下所示:
select id as id,
(case when PGroup in ('AAA','BBB') then 'AAA+BBB' else PGroup end) as super_group,
sum(number) as total
from your_table
group by id,super_group