时间:2023-10-27来源:系统城装机大师作者:佚名
1、mysql 数据库中 count() 函数是统计查询结果中的行数,例如我们有下表 user_auth :
使用 count() 函数来查询结果个数,使用如下查询:
1 | mysql > select count (*) from user_auth ; |
注意的是,count 会忽略掉 NULL 的结果, 所以 count(字段名) 这样使用的话,如果字段中包含为null的结果,将导致查询结果不准确,我们将表中数据更改如下:
此时查询:
1 | mysql > select count (user_id) from user_auth; |
结果如下:
2、mysql 中 sum() 函数用于计算某一字段中所有行的数值之和( sum 求和时会对 null 进行过滤,不计算),例如如下查询:
1 | mysql > select sum (user_id) from user_auth; |
结果如下:
另外也能使用 sum(条件) 进行对符合条件的结果行数进行求和,如下查询:
1 | mysql > select sum (user_id is null ), sum (aid = 1) from user_auth; |
结果如下:
需要注意的是,如果在没有返回行中使用 sum() 函数,sum 函数的返回值为 null,不是 0,例:
1 | 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) 进行结果的转换。
一般求和
1 | select sum (money) from user group by id; |
按条件求和 (对所有金额大于100的数据进行求和)
1 | select sum (if(money>=100,money,0)) from user group by id; |
聚合函数中如果想汇总某一类数据的数量,可以在括号中增加条件:
1 | sum ( case when 字段>0 then 1 else 0 end ) as 字段 |
要注意的是: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
2023-10-30
windows上的mysql服务突然消失提示10061 Unkonwn error问题及解决方案2023-10-30
MySQL非常重要的日志bin log详解2023-10-30
详解MySQL事务日志redo log一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...
2023-10-30
Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...
2023-10-30