CASE
CASE 是 SQL 里的条件表达式——在查询中做"如果…那么…否则…"的判断。CASE 可以出现在 SELECT、WHERE、ORDER BY、GROUP BY 甚至 UPDATE 的 SET 中,灵活性极高。
两种形态:简单 CASE(CASE 列名 WHEN 值1 THEN ...)和搜索 CASE(CASE WHEN 条件 THEN ...)。后者更灵活,可以做范围判断、多条件组合。每个 CASE 以 END 收尾,ELSE 可选——不写 ELSE 时默认返回 NULL。
分类、评分、条件分组——凡是"根据某些列的值算出新值"的场景,CASE 都能优雅处理。飞翔科技的工资评级、商品库存预警、绩效等级划分,都用 CASE 一步到位。
以飞翔科技为例:
-- 给员工工资分档
SELECT
emp_name,
basic_salary,
CASE
WHEN basic_salary >= 12000 THEN '高薪'
WHEN basic_salary >= 8000 THEN '中等'
ELSE '一般'
END AS 工资档次
FROM employees;
-- 飞翔小店库存状态预警
SELECT
product_name,
stock,
CASE
WHEN stock = 0 THEN '断货'
WHEN stock < 50 THEN '库存不足'
WHEN stock < 200 THEN '正常'
ELSE '充足'
END AS 库存状态
FROM products
WHERE shop_name = '飞翔小店';
-- 按绩效等级分组统计人数
SELECT
CASE
WHEN performance_bonus >= 15000 THEN '高绩效'
WHEN performance_bonus >= 8000 THEN '中绩效'
WHEN performance_bonus IS NOT NULL THEN '一般绩效'
ELSE '无绩效'
END AS 绩效等级,
COUNT(*) AS 人数
FROM employees
GROUP BY 绩效等级;