Expressions de table communes avancées

Manipulation de données dans Snowflake

Jake Roach

Field Data Engineer

Définir plusieurs expressions de table communes

On peut définir plusieurs expressions de table communes avec une seule clause WITH

$$

  • Nombre arbitraire de CTE
  • Les CTE peuvent être combinées avec JOIN
  • On peut toujours effectuer des opérations complexes dans une CTE
  • On peut même réutiliser les résultats d'une CTE dans une autre
WITH <cte-name> AS (

    <query>

), <another-cte-name> (

    -- Add another query!
    <another-query>
)

-- These CTE's could be JOIN'd 
SELECT ... ;
Manipulation de données dans Snowflake

Cours les plus performants

WITH active_courses AS (
    SELECT
        id,
        course_name,
        teacher_name
    FROM courses
    WHERE is_active

), course_avgs ( SELECT course_id, AVG(grade) AS avg_grade FROM student_courses GROUP BY course_id )

SELECT
    a.course_name,
    a.teacher_name,
    c.avg_grade
FROM active_courses AS a

-- JOIN these CTEs together
JOIN course_avgs AS c
    ON a.id = c.course_id

ORDER BY avg_grade DESC;

La requête devient plus facile à comprendre !

Manipulation de données dans Snowflake

Cours les plus performants

Jeux de résultats temporaires combinés pour produire la sortie finale des moyennes et des noms d'enseignants par cours

Manipulation de données dans Snowflake

Enseignants titulaires

WITH active_courses AS (
    SELECT
        id,
        course_name,
        teacher_name,
        teacher_tenure
    FROM courses

    -- JOIN the teachers table to the courses 
    -- table to get teacher_tenure
    JOIN teachers 
        ON courses.teacher_id = teachers.id

    WHERE is_active
), 
...
...
), course_avgs (
    SELECT
        course_id,
        AVG(grade) AS avg_grade
    FROM student_courses
    GROUP BY course_id
)

SELECT a.teacher_name, a.teacher_tenure MAX(c.avg_grade) AS highest_grade FROM active_courses AS a JOIN course_avgs AS c ON a.id = c.course_id GROUP BY a.teacher_name, a.teacher_tenure;
Manipulation de données dans Snowflake

Enseignants titulaires

Jeu de résultats d'une requête pour trouver l'ancienneté des enseignants et leur meilleure moyenne de cours

Manipulation de données dans Snowflake

Passons à la pratique !

Manipulation de données dans Snowflake

Preparing Video For Download...