sql case when用法_SQL面试必刷题(1) Case When
SQL语言是每个开发人员必备的一种技能,本文对面试过程中常见的SQL面试题进行分类、汇总,每类题型包括一些例题,希望大家能够举一反三。
01
Case When 是什么?
Mysql数据库中CASE WHEN语句,是用于计算条件列表并返回多个可能结果表达式之一。
case when sex = '1' then '男' when sex = '2' then '女'else '未知' end
注意:
(1) 在CASE函数中,else部分的默认值是NULL。
(2) CASE函数只返回第一个符合条件的值,剩下的CASE部分被自动忽略。
02
面试题
1. 有一个学生表:students(id, name ,birthday, sex, grade),要求按每个年级统计男生和女生的数量各是多少,统计结果的表头为:年级,男生数量,女生数量。
SELECT grade,COUNT (CASE WHEN sex = 1 THEN 1 ELSE NULL END) 男生数,COUNT (CASE WHEN sex = 2 THEN 1ELSE NULLEND) 女生数FROM studentsGROUP BY grade;
2. 有一个表table1(A,B,C),用SQL语句选出两个列,第一列是A、B两列的较大者,第二列是B、C两列的较小者。
SELECT (CASE WHEN a>b THEN a ELSE b END),(CASE WHEN b>c THEN b ELSE c END)FROM table1
3. 有一张表table2(语文成绩、数学成绩、英语成绩),请用一条sql语句按以下显示条件得出结果:
显示条件:大于或等于80显示为优秀,大于或等于60表示及格,小于60分表示不及格。
显示格式:
语文 数学 英语
及格 优秀 不及格
select(case when 语文>=80 then '优秀' when 语文>=60 then '及格' else '不及格') as 语文,(case when 数学>=80 then '优秀' when 数学>=60 then '及格' else '不及格') as 数学,(case when 英语>=80 then '优秀' when 英语>=60 then '及格' else '不及格') as 英语,from table
4. 有如下人口统计数据,要求按照国家和性别进行分组,得出结果如下:
SELECT country,SUM( CASE WHEN sex = '1' THEN population ELSE 0 END), --男性人口SUM( CASE WHEN sex = '2' THEN population ELSE 0 END) --女性人口FROM Table_A GROUP BY country;
03
Case When 总结
1. 与GROUP BY 结合,自定义列联表统计
# 统计每个国家的男女人口数量SELECT country,SUM( CASE WHEN sex = '1' THEN population ELSE 0 END), --男性人口SUM( CASE WHEN sex = '2' THEN population ELSE 0 END) --女性人口FROM Table_A GROUP BY country;
2. 与Group by结合,自定义分组统计
# 统计每个国家的男女人口数量SELECT country,SUM( CASE WHEN sex = '1' THEN population ELSE 0 END), --男性人口SUM( CASE WHEN sex = '2' THEN population ELSE 0 END) --女性人口FROM Table_A GROUP BY country;
3. 与distinct结合,去重分组统计
# 统计每个类型的数量select count(distinct case when type='1' then id else null end )type1_count, count(distinct case when type='2' then id else null end )type2_count from movies
4. 根据条件有选择的UPDATE
# 根据现有工资更新工资:UPDATE PersonnelSET salary =CASE WHEN salary >= 5000 THEN salary * 0.9 WHEN salary >= 2000 AND salary 4600 THEN salary * 1.15 ELSE salary END;
比心
❤
推荐阅读:
最简洁推导-手撕LR
最高频-二叉树面试题-汇总
海量数据面试题解决方案(1)-哈希法
海量数据面试题解决方案(2)-BitMap
Python必刷面试题(1)
Python必刷面试题(2)
Python必刷面试题(3)
海量干货,持续发送
大厂内推、技术资料获取, 加小编微信,拉你进 【算法研习社 - 交流群】上一篇: Spring的学习(三)——单元测试