Я следующую таблицу:MySQL: IF оператор используется с SUM
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 при выполнении последнего запроса? Единственное различие заключается в группировке.
BTW, удаляя superflous Group by
статью из последнего запроса также дает результат 20.
Спасибо заранее.
Потому что он делает 10 + 10 + 10 + (- 10), что 20. –