Вопрос:
В MySQL – В чем разница между использованием SUM или COUNT?
SELECT SUM(USER_NAME = ‘JoeBlow’) SELECT COUNT(USER_NAME = ‘JoeBlow’) Лучший ответ:
Это большая разница, потому что результат не тот же.
Первый запрос возвращает количество раз, когда условие истинно, поскольку true – 1 и false – 0.
Второй запрос возвращает полный счетчик записей, потому что count() не заботится о содержимом внутри него, пока контент не равен NULL. Поскольку count(1) и count(0) остаются значениями, и оба подсчитываются.
Чтобы получить правильное возвращаемое значение для второго запроса, вам нужно будет сделать результат условия null (вместо 0), чтобы не подсчитываться. Вот так:
SELECT COUNT(case when USER_NAME = ‘JoeBlow’ then ‘no matter what’ else NULL end) from your_table
Или просто удалите часть else из инструкции case, которая автоматически сделает else часть null.
Ответ №1
Чтобы ответить на вопрос OP более прямой и буквенный, рассмотрите, были ли вы суммировать целые числа в столбце вместо строк.
+—-+——+ | id | vote | +—-+——+ | 1 | 1 | | 2 | -1 | | 3 | 1 | | 4 | -1 | | 5 | 1 | +—-+——+
COUNT = 5 голосов
SUM = 1 голос
(-2 + 3 = 1)
Сумма выполняет математическую сумму, тогда как count просто подсчитывает любое значение как 1 независимо от того, какой тип данных.