【sql】case when用法

简单case函数:

格式:

case 列名
	when 条件1 then 表达式1
	when 条件2 then 表达式2
	······
	else 表达式
end
  • case函数只返回第一个符合条件的值,剩下的部分将会被自动忽略
  • else 可以省略

例: 查询学生的学号、姓名、性别、年龄、院系,对于性别按以下规定显示:性别为男则显示为男生;性别为女则显示为女生。

select sno 学号, sname 姓名, 
	case ssex
		when '男' then '男生'
		when '女' then '女生'
	end 性别, sage 年龄, sdept 院系
from student;

case搜索函数:

格式:

case 
	when 条件1 then 表达式1
	when 条件2 then 表达式2
	······
	else 表达式
end

例: 查询学生的学号、课程号及成绩,对于成绩按以下规定显示:成绩在60分以下显示为不及格;60-79之间显示为良好;80以上显示为优秀。

select sno, cno,
	case
		when grade < 60 then '不合格'
		when grade <= 79 then '良好'
		else '优秀'
	end grade
from sc; 

相关实验题:

按照院系降序显示所有学生的 “院系,学号、姓名、性别、年龄”等信息,其中院系按照以下规定显示:院系为CS显示为计算机系,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明;

select 
	case sdept
		when 'CS' then '计算机系'
		when 'IS' then '信息系'
		when 'MA' then '数学系'
		when 'EN' then '外语系'
		when 'CM' then '中医系'
		when 'WM' then '西医系'
		else '院系不明'
	end 院系, sno 学号, sname 姓名, ssex 性别, sage 年龄
from student
order by sdept desc;

在这里插入图片描述


查询所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段“院系规模”,其中若该院系人数>=5则该字段值为“规模很大”,若该院系人数大于等于4小于5则该字段值为“规模一般”, 若该院系人数大于等于2小于4则该字段值为“规模稍小”,否则显示“规模很小”;

select sdept 院系,
	case 
		when count(*) >= 5 then '规模很大'
		when count(*) >= 4 then '规模一般'
		when count(*) >= 2 then '规模稍小'
		else '规模很小'
	end 院系规模
from student
where sdept is not null
group by sdept

在这里插入图片描述


显示选修各个课程的及格的人数,及格比率;

select cno, sum(case when grade >= 60 then 1 else 0 end) 及格人数,
	sum(case when grade >= 60 then 1 else 0 end) / count(*) 及格比率
from sc
group by cno;

显示各个院系男女生人数,其中在结果集中列标题分别指定为“院系名称、男生人数、女生人数”;

select sdept 院系名称,
	sum(case ssex when '男' then 1 else 0 end) 男生人数,
	sum(case ssex when '女' then 1 else 0 end) 女生人数
from student
group by sdept;
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zyh_fighting

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

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

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

打赏作者

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

抵扣说明:

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

余额充值