MySQL - SUM和COUNT有什么区别?

19

在MySQL中,使用SUM和COUNT有什么区别?

SELECT SUM(USER_NAME =  'JoeBlow') 

SELECT COUNT(USER_NAME =  'JoeBlow') 
4个回答

31

为了更直接而字面地回答OP的问题,考虑一下您是否在列中求和整数而不是字符串。

+----+------+
| id | vote |
+----+------+
|  1 |    1 |
|  2 |   -1 |
|  3 |    1 |
|  4 |   -1 |
|  5 |    1 |
+----+------+

COUNT = 5票

SUM = 1票
(-2 + 3 = 1)

Sum执行数学求和,而count只是简单地计算任何值为1,不考虑数据类型。


27

结果不同是因为查询方式不同。

第一个查询返回条件成立的次数,因为true表示1,而false则表示0

第二个查询返回满足条件的完整记录数,因为count() 只关心括号内的内容是否为空,只要不为空都会计数。因此 count(1)count(0) 都是有值,都被计入了结果。

要想使第二个查询得到正确的结果,需要让条件的返回值为null(而非0),这样才不会被计数。如下所示:

SELECT COUNT(case when USER_NAME = 'JoeBlow' then 'no matter what' else NULL end) 
from your_table

或者简单地从case语句中删除else部分,这会自动将else部分变为null


1
我猜COUNT()返回列中的行数,而SUM()返回该列的总和。

4
请解释得更详细一些 - 在其他答案中已经提到了COUNT计数和SUM求和的事实,除非你必须添加一些新的见解,否则没有必要重复提及。 - Nico Haase

-1
select count(field) from table 

比...慢

select sum(1) from table

考虑使用第二个选项


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接