条件表达式 CASE WHEN
用 CASE WHEN 实现 IF-ELSE 逻辑、分类统计
条件表达式 CASE WHEN
SQL 里的 CASE WHEN 就是 if-else——根据条件返回不同结果,在查询中做逻辑判断。
学完本章你将: 掌握简单 CASE、搜索 CASE、在聚合中使用 CASE。
基本语法 —— 搜索 CASE
sql
SELECT name, age,
CASE
WHEN age < 18 THEN '未成年'
WHEN age < 60 THEN '成年人'
ELSE '老年人'
END AS age_group
FROM users;
⚠️ WHEN 按顺序匹配,满足第一个条件后就停止。所以条件从严格到宽松排列。
简单 CASE(等值比较)
sql
SELECT name,
CASE city
WHEN '北京' THEN '一线'
WHEN '上海' THEN '一线'
WHEN '广州' THEN '一线'
ELSE '其他'
END AS city_level
FROM users;
CASE 在聚合中
CASE 最强大的用法是条件聚合——分类统计:
sql
-- 统计各年龄段人数
SELECT
COUNT(CASE WHEN age < 18 THEN 1 END) AS 未成年,
COUNT(CASE WHEN age >= 18 AND age < 60 THEN 1 END) AS 成年人,
COUNT(CASE WHEN age >= 60 THEN 1 END) AS 老年人
FROM users;
每个 CASE WHEN ... THEN 1 END:满足条件返回 1,不满足返回 NULL,COUNT 自动跳过 NULL。