Appliquer une logique conditionnelle dans Snowflake

Manipulation de données dans Snowflake

Jake Roach

Field Data Engineer

Agrégation avec des instructions CASE

Les requêtes avec une instruction CASE peuvent toujours utiliser des fonctions d'agrégation.

  • SUM()
  • AVG()
  • MIN()
  • MAX()
  • ...
  • MODE()

$$

N'oubliez pas d'inclure un GROUP BY !

Structure d'une instruction CASE avec agrégation et regroupement

Manipulation de données dans Snowflake

Agrégation avec des instructions CASE

SELECT
    CASE
        WHEN month_num IN (12, 1, 2) THEN 'Winter'
        WHEN month_num IN (3, 4, 5) THEN 'Spring'
        WHEN month_num in (6, 7, 8) THEN 'Summer'
        ELSE 'Fall'
    END AS season,

AVG(temperature) AS average_temperature, -- Manipulate data with AVG()
year_num FROM weather GROUP BY season, year_num; -- Remember to group by non-aggregated fields
Manipulation de données dans Snowflake

Agrégation avec des instructions CASE

Résultats d'une requête qui calcule la température moyenne par saison et par année

Manipulation de données dans Snowflake

Agréger des champs issus d'un CASE

SELECT
    season,
    AVG(
        CASE
            WHEN season = 'Winter' THEN temperature - 30
            WHEN season IN ('Spring', 'Fall') THEN temperature - 60
            WHEN season = 'Summer' THEN temperature - 75
        END
    ) AS relation_to_average_temperature
FROM weather
GROUP BY season;
Manipulation de données dans Snowflake

Agréger des champs issus d'un CASE

Tableau affichant l'écart à la température moyenne par saison

Manipulation de données dans Snowflake

JOIN

SELECT
    ...

    -- Define a CASE statement
    CASE ...

FROM <left_table>

-- JOIN new records to existing table
LEFT JOIN <right_table> 
    ... 
;

Les instructions CASE peuvent être construites avec des données jointes depuis deux tables différentes.

  • Utiliser des colonnes de plusieurs tables dans une instruction CASE
  • LEFT, RIGHT, INNER, OUTER, etc.
  • Combiner avec d'autres outils, y compris des fonctions d'agrégation

$$

$$

                                          Voyons cela !

Manipulation de données dans Snowflake

Déterminer l'éligibilité aux crédits universitaires

SELECT
    students.student_name,
    student_courses.course_name,

-- Evaluate both the student's grade number and grade for the course CASE WHEN students.grade_num = 12 AND student_courses.grade > 90 THEN 'College Credit Eligible' ELSE 'Too Early for College Credit' END AS college_credit_status
FROM student_courses LEFT JOIN students ON student_courses.student_id = students.student_id;
Manipulation de données dans Snowflake

Déterminer l'éligibilité aux crédits universitaires

Résultats d'une requête sur les tables JOINTES students et student_courses

Manipulation de données dans Snowflake

Passons à la pratique !

Manipulation de données dans Snowflake

Preparing Video For Download...