mysql case when 和sum()组合统计

常用语法:
sum(case 属性名 when 属性值1 then 1 else 0 end),意思就是某个属性下为属性值1就加1个数量,否则就作0统计。

数据准备:

INSERT INTO notice_person (id, notice_edu) VALUES (1, '小学');
INSERT INTO notice_person (id, notice_edu) VALUES (2, '初中');
INSERT INTO notice_person (id, notice_edu) VALUES (3, '初中');
INSERT INTO notice_person (id, notice_edu) VALUES (5, '大学本科');
INSERT INTO notice_person (id, notice_edu) VALUES (12, '硕士研究生');
INSERT INTO notice_person (id, notice_edu) VALUES (13, '大学本科');
INSERT INTO notice_person (id, notice_edu) VALUES (14, '大专');
INSERT INTO notice_person (id, notice_edu) VALUES (15, '大学本科');
INSERT INTO notice_person (id, notice_edu) VALUES (16, '高中');
INSERT INTO notice_person (id, notice_edu) VALUES (17, '大学本科');
INSERT INTO notice_person (id, notice_edu) VALUES (18, '高中');
INSERT INTO notice_person (id, notice_edu) VALUES (19, '技校');
INSERT INTO notice_person (id, notice_edu) VALUES (20, '大专');
INSERT INTO notice_person (id, notice_edu) VALUES (21, '大学本科');
INSERT INTO notice_person (id, notice_edu) VALUES (28, '大学本科');


查询效果:

 查询语句:

-- 通报人员学历占比 小学1 初中2 高中1 中专0 技校0 大专1 职高0 其他0 大学本科3 硕士1 博士0
select
      sum(CASE WHEN a.notice_edu='小学' THEN 1 ELSE 0 END) xiaoxueCount,
			sum(CASE WHEN a.notice_edu='初中' THEN 1 ELSE 0 END) chuzhongCount,
			sum(CASE WHEN a.notice_edu='高中' THEN 1 ELSE 0 END) gaozhongCount,
			sum(CASE WHEN a.notice_edu='中专' THEN 1 ELSE 0 END) zhongzhuanCount,
			sum(CASE WHEN a.notice_edu='技校' THEN 1 ELSE 0 END) jixiaoCount,
			sum(CASE WHEN a.notice_edu='大专' THEN 1 ELSE 0 END) dazhuanCount,
			sum(CASE WHEN a.notice_edu='职高' THEN 1 ELSE 0 END) zhigaoCount,
			sum(CASE WHEN a.notice_edu='其他' THEN 1 ELSE 0 END) qitaCount,
			sum(CASE WHEN a.notice_edu='大学本科' THEN 1 ELSE 0 END) daxuebenkeCount,
			sum(CASE WHEN a.notice_edu='硕士研究生' THEN 1 ELSE 0 END) shuoshiCount,
			sum(CASE WHEN a.notice_edu='博士研究生' THEN 1 ELSE 0 END) boshiCount
from  notice_person a 
on b.id = a.notice_id and a.notice_edu !='';

 这里的case when使用当达到条件时就给1,外面有个sum来加起来,如果外面没有sum没法计数,这样就可以获取总人数.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值