sql查询字段替换值case when then

 

case具有两种格式。简单case函数和case搜索函数。

一、简单case函数

CASE sex 
WHEN '1' THEN
'男' 
WHEN '2' THEN
'女’ else '其他' end

二、case搜索函数

CASE 
	WHEN sex = '1' THEN
	'男' 
	WHEN sex = '2' THEN
	'女' ELSE '其他' 
END

这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。

case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。

Eg:下面的sql,永远不可能得到“第二种”这个结果

CASE 
	WHEN kind IN ( 'a', 'b' ) THEN
	'第一种' 
	WHEN kind IN ( 'a' ) THEN
	'第二种' ELSE '其他' 
END

三、sum与case结合使用,可以实现分段统计。

Eg:统计考试成绩各种分段的人数,sql语句如下:

SELECT
	d.NAME 课程名,
	count( * ) 考试人数,
	sum( CASE e.result WHEN 1 THEN 1 ELSE 0 END ) 通过人数,
	sum( CASE e.result WHEN 1 THEN 1 ELSE 0 END ) / count( * ) 通过率,
	sum( CASE WHEN e.score >= 90 THEN 1 ELSE 0 END ) grade9,
	sum( CASE WHEN e.score <= 89 AND e.score >= 80 THEN 1 ELSE 0 END ) grade8,
	sum( CASE WHEN e.score <= 79 AND e.score >= 70 THEN 1 ELSE 0 END ) grade7,
	sum( CASE WHEN e.score <= 69 AND e.score >= 60 THEN 1 ELSE 0 END ) grade6,
	sum( CASE WHEN e.score <= 59 THEN 1 ELSE 0 END ) grade0
FROM
	exam e
	LEFT JOIN user u ON u.id = e.user_id
	LEFT JOIN lesson d ON d.id = u.lesson_id 
WHERE
	u.deleted = 0 
GROUP BY
	d.id

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕白Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值