3.5 — CASE 智能分组
你将学到什么
- 如何用 SQL 的
CASE
语句实现条件分组和分类 - 类似 Excel 的 IF/IFS 函数
从 Excel 到 SQL:条件分组
在 Excel 中,你可以用 IF
或 IFS
给数据分组或分类。在 SQL 中,用 CASE
实现。
Excel:=IF(Amount > 100, "Large order", "Small order")
SQL:
sql
SELECT Amount,
CASE WHEN Amount > 100 THEN 'Large order'
ELSE 'Small order' END AS Order_Size
FROM sales;
CASE WHEN ... THEN ... ELSE ... END
实现条件判断。AS Amount_Category
给这个新的列命名。
多条件分类
Excel:=IFS(Amount > 200, "Very Large", Amount > 100, "Large", TRUE, "Small")
SQL:
sql
SELECT Amount,
CASE WHEN Amount > 200 THEN 'Very large'
WHEN Amount > 100 THEN 'Large'
ELSE 'Small' END AS Order_Size
FROM sales;
处理 NULL 值
你可以用 CASE
处理空值 (NULL
),就像 Excel 中的 IF(ISBLANK(...))
函数。
示例:将 NULL 金额替换为 0
sql
SELECT Product,
CASE
WHEN Amount IS NULL THEN 0
ELSE Amount
END AS Amount_Filled
FROM sales;
- 如果
Amount
是NULL
,结果会显示0
;否则显示原值。
技巧: 你也可以使用 COALESCE()
函数处理 NULL 值:
sql
SELECT Product, COALESCE(Amount, 0) AS Amount_Filled
FROM sales;
示例:将 NULL 金额分类为"未知"
sql
SELECT Product, Amount,
CASE
WHEN Amount IS NULL THEN 'Unknown'
WHEN Amount >= 100 THEN 'High'
WHEN Amount >= 50 THEN 'Medium'
ELSE 'Low'
END AS Amount_Category
FROM sales;
- 如果
Amount
为空,分类会显示"未知"。
关键点
CASE
可实现多条件分组和分类。- 类似 Excel 的 IF/IFS。
- 适合生成业务标签、分组等。
下一步
下一个模块你将学习 SQL 聚合分析(如求和、计数、分组等)。