Menu
CoddyTech

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 为列命名。

challenge icon

挑战

简单

可用的表和列:

  • 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
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

进阶内容中的所有课

自己练习: SQL 在线编辑器