Bedingte Logik mit CASE-Anweisungen

Datenmanipulation in Snowflake

Jake Roach

Field Data Engineer

ELSE verwenden

$$

Manchmal gibt es zusätzliche Werte, die nicht in eine WHEN ... THEN-Anweisung fallen.

$$

  • Nutze ELSE, um diese Fälle abzufangen
  • Ideal, um Edge Cases zu erwischen
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 |
Datenmanipulation in Snowflake

Eine Bedingung auswerten

Operator Bedingung Beispiel
= Wert ist gleich einem anderen Wert column_a = 'value_a'
IN (...) Wert ist in einer Liste von Werten column_a IN ('value_a', 'value_b')
>, < Wert ist größer oder kleiner als ein anderer Wert column_a > 0
>=, <= Gegenstücke zu > und <, schließt Gleichheit ein column_a >= 0
BETWEEN Wert liegt inklusiv zwischen zwei Werten column_a BETWEEN 0 AND 10

Diese Vergleichsoperatoren lassen sich mit AND, OR oder NOT kombinieren

CASE-Anweisungen sind in Snowflake effizient, da es eine spaltenorientierte Datenbank ist

Datenmanipulation in Snowflake

Temperaturen kategorisieren

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;
Datenmanipulation in Snowflake

Temperaturen kategorisieren

Eine Tabelle mit den Ergebnissen einer CASE-Anweisung, die Datensätze nach ihrer Temperatur kategorisiert

Datenmanipulation in Snowflake

Bedingungen kombinieren

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;

Wir können in einer einzigen CASE-Anweisung mehrere Spalten auswerten

Datenmanipulation in Snowflake

Bedingungen kombinieren

Eine Tabelle mit den Ergebnissen einer CASE-Anweisung, die Datensätze nach Temperatur und Außenstatus kategorisiert

Datenmanipulation in Snowflake

Lass uns üben!

Datenmanipulation in Snowflake

Preparing Video For Download...