0

我在尝试正确获取此查询时遇到了麻烦。

假设我有一张包含以下数据的表格:

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,它有 2 个条目,代码为“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 求和的查询,而如果它已经添加了一个具有相同“代码”的查询,则忽略它?

4

2 回答 2

2
SELECT id,
       SUM(CASE WHEN code = 'ba' then 1 ELSE 0 END)
FROM table1
GROUP BY id

后续问题:为什么 id=2 的值为 1,不是 0 吗?

更新 1

SELECT id,
       count(Distinct code)
FROM table1
GROUP BY id
于 2012-11-16T14:48:22.770 回答
0
SELECT code,SUM(xyz) FROM table GROUP BY code,xyz
于 2012-11-16T14:39:20.997 回答