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 quand même 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 trouvant la température moyenne par saison et par année

Manipulation de données dans Snowflake

Agréger des champs issus de 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 de CASE

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

Manipulation de données dans Snowflake

JOINS

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 de deux tables différentes.

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

$$

$$

                                          Voyons cela de près !

Manipulation de données dans Snowflake

Déterminer l'admissibilité aux crédits collégiaux

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'admissibilité aux crédits collégiaux

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...