我在尝试正确查询时遇到了问题。
说我有一张包含以下数据的表:
id | xyz | code
===========================
1 | 1 | ba
2 | 1 | zz
3 | 1 | ba
1 | 1 | zz
1 | 1 | ba
2 | 1 | zz
我想得到'xyz'的总和,按id分组。
SELECT id, SUM(xyz) as mysum FROM table WHERE xyz=1 GROUP BY id
我最终会得到结果:
id | mysum
================
1 | 3
2 | 2
3 | 1
完美。
问题是,我真正喜欢的是按“代码”列分组,所以如果对于id:1,其中有两个代码为“ba”的条目,则结果为更像这样:
id | mysum
================
1 | 2
2 | 1
3 | 1
这是我对mysql的有限理解失败的地方。因为我会想这样做一个查询:
SELECT id, SUM(xyz) AS mysum FROM table WHERE xyz=1 GROUP BY id, code
但是这显然给出了我之后不的结果。
如何进行这种对xyz列进行求和的查询,如果已经添加了具有相同“代码”的查询,则省略它?
答案 0 :(得分:2)
SELECT id,
SUM(CASE WHEN code = 'ba' then 1 ELSE 0 END)
FROM table1
GROUP BY id
后续问题:为什么id = 2的值为1,是不是为零?
更新1
SELECT id,
count(Distinct code)
FROM table1
GROUP BY id
答案 1 :(得分:0)
SELECT code,SUM(xyz) FROM table GROUP BY code,xyz