开发者

mysql数据库之count()函数和sum()函数用法及区别说明

开发者 https://www.devze.com 2023-11-19 11:50 出处:网络 作者: white_ice
目录mysql之count()和sum()用法及区别mysql中sum()和count()函数按条件统计数据sum()函数count()函数SQL的执行顺序总结mysql之count()和sum()用法及区别
目录
  • mysql之count()和sum()用法及区别
  • mysql中sum()和count()函数按条件统计数据
    • sum()函数
    • count()函数
    • SQL的执行顺序
  • 总结

    mysql之count()和sum()用法及区别

    1、mysql 数据库中 count() 函数是统计查询结果中的行数,例如我们有下表 user_auth

    mysql数据库之count()函数和sum()函数用法及区别说明

    使用 count() 函数来查询结果个数,使用如下查询:

    mysql > select count(*) from user_auth ; 

    mysql数据库之count()函数和sum()函数用法及区别说明

    注意的是,count 会忽略掉 NULL 的结果, 所以 count(字段名) 这样使用的话,如果字段中包含为null的结果,将导致查询结果不准确,我们将表中数据更改如下:

    mysql数据库之count()函数和sum()函数用法及区别说明

    此时查询:

    mysql > select count(user_id) from user_auth;

    结果如下:

    mysql数据库之count()函数和sum()函数用法及区别说明

    2、mysql sum() 函数用于计算某一字段中所有行的数值之和( sum 求和时会对 null 进行过滤,不计算),例如如下查询:

    mysql > select sum(user_id) from user_auth; 

    结果如下:

    mysql数据库之count()函数和sum()函数用法及区别说明

    另外也能使用 sum(条件) 进行对符合条件的结果行数进行求和,如下查询:

    mysql > select sum(user_id is null),sum(aid = 1) from user_auth; 

    结果如下:

    mysql数据库之count()函数和sum()函数用法及区别说明

    需要注意的是,如果在没有返回行中使用 sum() 函数,sum 函数的返回值为 null,不是 0,例:

    mysql > select sum(user_id) from user_auth wwww.devze.comhere id not in (2,4,6);

    结果如下:

    mysql数据库之count()函数和sum()函数用法及区别说明

    此时使用JDBC或者一些第三方框架进行映射时就会报错,

    解决办法是

    使用IFNULL(sum(user_id),0) 或者 COALESCE(sum(user_id),0) 进行结果的转换。

    mysql中sum()和count()函数按条件统计数据

    sum()函数

    一般求和

    select sum(money) from user group by id;

    按条件求和 (对所有金额大于100的数据进行求和)

    select sum(if(money>=100,www.devze.commoney,0)) from user gpythonroup by id;

    聚合函数中如果想汇总某一类数据的数量,可以在括号中增加条件:

    sum(case when 字段>0 then 1 ewww.devze.comlse 0 end) as 字段

    count()函数

    要注意的是:count(case when 字段>0 then 1 else 0 end) as 字段,这样写的话

    count函数不管记录内容是0或1,它的作用只是计算记录数,计算出来的是0和1的全部次数,如果你要计算次数,用sum(case when 字段>0 then 1 else 0 end) as 字段

    或者你用 count(case when 字段>0 then 1 else null end) as 字段 这种写法

    基本原理是 使用了数据库count(null)时返回的是0 ,count(非null)返回是1

    SQL的执行顺序

    • 第一步:执行FROM
    • 第二步:WHERE条件过滤
    • 第三步:GROUP BY分组
    • 第四步:执行SELECT投影列
    • 第五步:HAVING条件过滤
    • 第六步:执行ORDER BY 排序

    总结

    以上为个人经验,希望能php给大家一个参考,也希望大家多多支持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号