MySQL 中 Sum(1)与Count(1)的区别和联系

MySQL中count和sum使用

count

  1. COUNT()函数里面的参数是列名的的时候,那么会计算有值项的次数。(NULL 不计入, 但是''值计入)
  2. COUNT(*)可以计算出行数,包括null ,COUNT(1)也可以计算出行数,1在这里代表一行
  3. COUNT(条件表达式),不管记录是否满足条件表达式,只要非NULL就加1 ,所以一般都count(id=1 or null)

sum

  1. sum()参数是列名的时候,计算列名的值的相加,不是统计有值项的总数
  2. sum(id=2) 当参数是表达式的时候,统计满足条件的行数

注:

  1. 上面id指列名,=后面的代表值

本文参考:MySQL中sum和count用法总结,如需转载请注明出处,
MySQL中count和sum使用 - lin_zone - 博客园


mysql sum(1)_简单说一下MySQL sum(1) count(1) 区别和联系

简单说一下MySQL sum(1) count(1) 区别和联系 - 豆豆2018 - 博客园

有人说sum(1) 相当于 count(1) ,其实还是有一点点差别;

1. 首先说一下使用过程中注意的点

sum(1)  count(1) 使用过程中都有可能返回值为NULL,并不是统计不到就返回值为0

以下数据表实例

 <1> 对于sum(1),如果带 where 条件查不到数据,则返回Null

1

SELECT sum(1) FROM tickets WHERE `order` > 10000

  

  <2> 对于 count(1) ,如果带 where 且 group by  操作, where条件下无数据,也会返回NUll 

1

SELECT count(1) FROM tickets WHERE `order` > 10000   GROUP BY priority

  

 都可以用 IFNULL(count(1),0)  优化处理

2.具体说一下 sum(1) count(1)  统计数据上面的差别

1

2

3

4

5

6

7

8

SELECT sum(if(t.`order`=666,1,0)) as sum ,

count(if(t.`order`=666,1,0)) as count,

count(1),

count(0),

sum(1),

sum(0)

FROM tickets t

GROUP BY priority

   可以看到,count() 其中请携带的if条件没有起作用,在分组后,count(1)  count(0)  统计的都是所有条数, sum可根据 0 1 起到 if()  我们想要的统计效果

多多实践总结~