mysql:关于case-when的使用

本文详细介绍MySQL中CASE WHEN语句的三种实用场景,包括数据按特定方式分组聚合、不同条件下的分组统计及有选择地更新数据,帮助读者掌握高效的数据处理技巧。

mysql中关于case-when的三种使用场景

在数据库中,case when常用来做条件判断,在一些场景下十分方便。

开始之前

数据准备:参加某一次竞赛时的学生成绩,sex代表性别(1为男0为女),subject代表学科,score代表分数。张三属于一班,王红属于二班,周浩属于三班

在这里插入图片描述

第一种:已知数据按照另外一种方式进行分组,聚合

设想这样一个场景:我想知道每个班总分是多少;代码在下面给出

SELECT SUM(score),
(case name
	when '张三' THEN '一班'
	when '王红' THEN '二班'
	ELSE '三班'
END) class
from student_score
GROUP BY 
case name
	when '张三' THEN '一班'
	when '王红' THEN '二班'
	ELSE '三班'
END;

结果:

在这里插入图片描述
上面sql的意思就是:将张三认为是一班的人,王红认为是二班的人,其他的(剩余周浩)认为是三班的人,然后按照这个分法分组求和,得到了想要的结果。

第二种:用一个SQL语句完成不同条件的分组。

设想这样一个场景:我想知道每个学科男生女生分别得到多少分;代码在下面给出

SELECT `subject`,
SUM(CASE WHEN sex = 1 THEN score ELSE 0 END) male,
SUM(CASE WHEN sex = 0 THEN score ELSE 0 END) female
FROM student_score
GROUP BY `subject`;

结果:

在这里插入图片描述

上面sql的意思就是:按照学科分组聚合时,male一列表示sex为1则score保持不变,sex为0时则score为0;
female一列与male一列代表的意义相反,sex为0则score保持不变,sex为1时则score为0.

第三种:根据条件有选择的UPDATE

设想这样一个场景:我想对每一项分数,依据是大于80的分数减10,小于70的分数加5,其他的部分不变;代码在下面给出

UPDATE student_score set 
score = (
CASE WHEN score > 80 then score - 10
	WHEN score <70 THEN score + 5
	ELSE score
END);

上面sql的意思就是:按照条件来判断每一条数据,然后更新.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值