mysql 经过选择函数case-when解决聚合函数忽略null的状况

因为网上没有找到相关的解决方案,将这个方案拿出来供你们参考,下面以sum函数为例mysql

建表、数据sql

CREATE TABLE `student` (
  `name` varchar(10) DEFAULT NULL COMMENT '姓名',
  `sex` varchar(1) DEFAULT NULL COMMENT '性别',
  `id` varchar(2) DEFAULT NULL COMMENT '主键'
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

INSERT INTO `eye`.`student` (`name`, `sex`, `age`) VALUES ('顾二嫂', '女', '30');
INSERT INTO `eye`.`student` (`name`, `sex`, `age`) VALUES ('宋江', '男', '48');
INSERT INTO `eye`.`student` (`name`, `sex`, `age`) VALUES ('林冲', '男', '35');
INSERT INTO `eye`.`student` (`name`, `sex`, `age`) VALUES ('娇娘', '女', NULL);

mysql默认的sum函数处理结果函数

select sex as '性别',sum(age) as '总年龄' from student GROUP BY sex

如下是没有忽略null的处理方案(对于值为null的状况,sum函数会把当前值当0处理,那么咱们只要让为null的值大于0便可)code

select sex as '性别',
      (case when sum(IFNULL(age,1))>sum(age) then null else sum(age) end) as '总年龄' 
from student GROUP BY sex

相关文章
相关标签/搜索