使用 CASE 的条件逻辑

Snowflake 中的数据操作

Jake Roach

Field Data Engineer

使用 ELSE

$$

有时会有额外的取值不符合任一 WHEN ... THEN 分支。

$$

  • 使用 ELSE 覆盖这些情形
  • 很适合捕获边界情况
SELECT
    student,
    CASE
        WHEN grade_num = 12 THEN 'Senior'
        WHEN grade_num = 11 THEN 'Junior'
        ...
        ELSE 'Not in HS'  -- Catch others!
    END AS grade
FROM students;
          |   student  |    grade   |
          | ---------- | ---------- |
          |  Viraj     |  Junior    |
          |  Stephanie |  Senior    |
          |  Lewis     |  Not in HS |
Snowflake 中的数据操作

评估条件

运算符 条件 示例
= 值等于另一值 column_a = 'value_a'
IN (...) 值在列表中 column_a IN ('value_a', 'value_b')
>, < 值大于或小于另一值 column_a > 0
>=, <= >< 的对应,包含等号 column_a >= 0
BETWEEN 值在两者之间(含边界) column_a BETWEEN 0 AND 10

这些比较运算符可与 ANDORNOT 组合使用

在 Snowflake 中,CASE 高效,因为其为列式数据库

Snowflake 中的数据操作

气温分类

SELECT
    todays_date,
    temperature,
    CASE

WHEN temperature BETWEEN 70 AND 90 THEN 'Ideal for Swimming'
WHEN temperature >= 50 AND tempreature < 70 THEN 'Perfect for Sports'
WHEN temperature > 32 AND temperature < 50 THEN 'Spring/Fall Temps' WHEN temperature > 0 AND temperature <= 32 THEN 'Winter Weather' ELSE 'Extreme Temperatures'
END AS temperature_description FROM weather;
Snowflake 中的数据操作

气温分类

一个表格,显示 CASE 语句按气温分类的结果

Snowflake 中的数据操作

组合条件语句

SELECT
    todays_date,
    temperature,
    status,

CASE WHEN temperature > 70 AND status NOT IN ('Rain', 'Wind') THEN 'Beach'
WHEN temperature BETWEEN 45 AND 70 AND status = 'Sun' THEN 'Sports'
WHEN temperature <= 32 OR status = 'Snow' THEN 'Skiing'
ELSE 'Stay In' END AS activity FROM weather;

我们可以在一个 CASE 语句中评估多个列

Snowflake 中的数据操作

组合条件语句

一个表格,显示 CASE 语句按气温和户外状态分类的结果

Snowflake 中的数据操作

¡Vamos a practicar!

Snowflake 中的数据操作

Preparing Video For Download...