在MySQL中 - 使用SUM或COUNT有什么区别?
SELECT SUM(USER_NAME = 'JoeBlow')
SELECT COUNT(USER_NAME = 'JoeBlow')
答案 0 :(得分:10)
第一个查询返回条件为真的次数,因为true
为1
且false
为0
。
第二个查询返回完整的记录计数,因为count()
不关心其中的内容,只要内容为NOT 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 :(得分:6)
要更直接和文字地回答OP问题,请考虑您是否在列中总计整数而不是字符串。
+----+------+
| id | vote |
+----+------+
| 1 | 1 |
| 2 | -1 |
| 3 | 1 |
| 4 | -1 |
| 5 | 1 |
+----+------+
COUNT = 5票
SUM = 1票
( - 2 + 3 = 1)
Sum正在进行数学求和,而count只是将任何值都计算为1,而不管数据类型是什么。
答案 2 :(得分:0)
我猜 COUNT() 返回列中的行数,而 SUM() 返回列的总和