欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sql case when用法_SQL面试必刷题(1) Case When

程序员文章站 2022-06-05 11:27:58
...

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. 有如下人口统计数据,要求按照国家和性别进行分组,得出结果如下:

sql case when用法_SQL面试必刷题(1) Case When

sql case when用法_SQL面试必刷题(1) Case When

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;

比心

sql case when用法_SQL面试必刷题(1) Case When

推荐阅读: 

  • 最简洁推导-手撕LR

  • 最高频-二叉树面试题-汇总

  • 海量数据面试题解决方案(1)-哈希法

  • 海量数据面试题解决方案(2)-BitMap

  • Python必刷面试题(1)

  • Python必刷面试题(2)

  • Python必刷面试题(3)

【算法研习社】      机器学习、数据挖掘、推荐系统、架构编程

sql case when用法_SQL面试必刷题(1) Case When

海量干货,持续发送

      大厂内推、技术资料获取, 加小编微信,拉你进 【算法研习社 - 交流群】