Erweiterte Common Table Expressions

Datenmanipulation in Snowflake

Jake Roach

Field Data Engineer

Mehrere Common Table Expressions definieren

Mehrere Common Table Expressions können in einer einzigen WITH-Klausel definiert werden

$$

  • Beliebig viele CTEs definierbar
  • CTEs können per JOIN verbunden werden
  • Auch komplexe Operationen in einer CTE möglich
  • Ergebnisse einer CTE in einer anderen weiterverwenden
WITH <cte-name> AS (

    <query>

), <another-cte-name> (

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

-- These CTE's could be JOIN'd 
SELECT ... ;
Datenmanipulation in Snowflake

Top-Kurse nach Leistung

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;

Abfrage wird leichter verständlich!

Datenmanipulation in Snowflake

Top-Kurse nach Leistung

Die temporären Ergebnismengen, die sich zur finalen Ausgabe aus Durchschnittsnoten und Lehrkräften pro Kurs verbinden

Datenmanipulation in Snowflake

Lehrkräfte mit Festanstellung

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

Lehrkräfte mit Festanstellung

Ergebnismenge einer Abfrage, die die Dauer der Anstellung und die höchste Kursdurchschnittsnote je Lehrkraft ermittelt

Datenmanipulation in Snowflake

Lass uns üben!

Datenmanipulation in Snowflake

Preparing Video For Download...