Skip to content

3.5 — CASE 智能分组

你将学到什么

  • 如何用 SQL 的 CASE 语句实现条件分组和分类
  • 类似 Excel 的 IF/IFS 函数

从 Excel 到 SQL:条件分组

在 Excel 中,你可以用 IFIFS 给数据分组或分类。在 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;
  • 如果 AmountNULL,结果会显示 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 聚合分析(如求和、计数、分组等)。