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

 更新时间:2023年06月19日 10:56:36   作者:white_ice  
这篇文章主要介绍了mysql数据库之count()函数和sum()函数用法及区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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

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

mysql > select count(*) from user_auth ;   

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

此时查询:

mysql > select count(user_id) from user_auth;

结果如下:

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

mysql > select sum(user_id) from user_auth; 

结果如下:

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

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

结果如下:

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

mysql > select sum(user_id) from user_auth where id not in (2,4,6);

结果如下:

此时使用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,money,0)) from user group by id;

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

sum(case when 字段>0 then 1 else 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 排序

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql异常占用资源排查

    mysql异常占用资源排查

    本文详细介绍了通过MySQL的全局变量检查日志状态,监控连接数及启用和调整慢查询记录,以帮助排查数据库性能问题,感兴趣的可以了解一下
    2025-07-07
  • 软件测试-MySQL(六:数据库函数)

    软件测试-MySQL(六:数据库函数)

    这篇文章主要介绍了MySQL数据库函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • mysql实现数据文件存储到指定分区的示例代码

    mysql实现数据文件存储到指定分区的示例代码

    MySQL中可以使用分区表来提高数据检索速度,本文主要介绍了mysql实现数据文件存储到指定分区的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • 登录MySQL数据库最快几步(图文步骤详解)

    登录MySQL数据库最快几步(图文步骤详解)

    当 MySQL 服务开启后,就可以通过客户端来登录 MySQL 数据库了。在 Windows 操作系统下可以使用 DOS 命令登录数据库,本节将介绍使用命令方式登录 MySQL 数据库的方法
    2023-10-10
  • MySQL不使用子查询的原因及优化案例

    MySQL不使用子查询的原因及优化案例

    对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家详细介绍了MySQL不使用子查询的原因及优化案例,需要的朋友可以参考下
    2025-01-01
  • mysql 中文乱码 解决方法集锦

    mysql 中文乱码 解决方法集锦

    主要是针对 1.4x版本的一些乱码问题,其实新版本中错误也差不多,大家注意下编码问题。
    2009-06-06
  • MySQL字符之char、varchar类型简析

    MySQL字符之char、varchar类型简析

    varchar和char是MySQL中的两种数据类型,都是用来存储字符串的,下面这篇文章主要给大家介绍了关于MySQL字符之char、varchar类型的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 安装MySQL后include目录下没有找到libmysql.lib

    安装MySQL后include目录下没有找到libmysql.lib

    安装了MySQL后,在其安装目录下的include文件夹并没有找到libmysql.lib,主要原因是在安装MySQL的时候,没有勾选develop component这一选项造成的
    2014-08-08
  • MySQL中空值Null和空字符‘‘的具体使用

    MySQL中空值Null和空字符‘‘的具体使用

    本文主要介绍了MySQL中空值Null和空字符''的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 简单实现MySQL服务器的优化配置方法

    简单实现MySQL服务器的优化配置方法

    我们今天主要向大家描述的是MySQL服务器的优化配置的时机操作步骤,以及在MySQL服务器的优化配置的的过程中值得我们主义的事项的介绍。
    2011-03-03

最新评论