CASE WHEN
本课属于 Coddy SQL 学习旅程的“进阶内容”单元。第 1 课,共 27 课。
CASE 表达式相当于 SQL 中的 if/else if/else。它位于 SELECT(或 ORDER BY,或 WHERE)中,并为每一行生成一个值。
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 75 THEN 'B'
WHEN score >= 60 THEN 'C'
ELSE 'F'
END AS grade
FROM students系统会从上到下依次检查每个 WHEN;第一个匹配项会生效。ELSE 是可选的。如果没有 ELSE,未匹配的行会得到 NULL。
始终以 END 结束,并使用 AS 为列命名。
挑战
简单可用的表和列:
employees:id、name、department、salary
为每位员工返回其 name、department,以及按以下规则生成的 tier 列:
- 当
salary >= 150000时为'partner'(任意部门) - 当
department = 'eng'且salary >= 100000时为'senior' - 当
salary >= 60000时为'mid' - 其他情况为
'entry'
按 salary 降序排列。注意,WHEN 分支的顺序很重要:第一个匹配项会生效。
亲手试试
SELECT name, department,
-- 按薪资和部门划分等级,包含多个 WHEN 分支
FROM employees
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
进阶内容中的所有课
自己练习: SQL 在线编辑器