我有下表:
Unique | Common | Score
1 | 1 | 10
2 | 1 | 10
3 | 1 | 10
4 | 1 | -10
如果我运行这个:
SELECT
SUM(`score`) AS `total`
FROM
`test`
GROUP BY
`common`
我得到总数:
20
这是我所期望的。
我想将负数视为零并对剩余分数求和以获得总数。所以,如果我运行这个:
SELECT
IF(`score`<0, 0, SUM(`score`)) AS `total`
FROM
`myTable`
GROUP BY
`unique`
我得到这些总数:
10
10
10
0
这也是我所期望的。
但是,如果我运行这个:
SELECT
IF(`score`<0, 0, SUM(`score`)) AS `total`
FROM
`myTable`
GROUP BY
`common`
我总共得到:
20
为什么我在执行最后一个查询时得到的是 20 而不是 30?唯一的区别是分组。
顺便说一句,从最后一个查询中删除多余的 Group by
子句也会得到 20 的结果。
提前致谢。
试试这个
SELECT
SUM(`score`) AS `total`
FROM
`myTable` WHERE score > 0
GROUP BY
`common`
我是一名优秀的程序员,十分优秀!