Expresii comune de tabel avansate

Manipularea datelor în Snowflake

Jake Roach

Field Data Engineer

Definirea mai multor expresii comune de tabel

Mai multe expresii comune de tabel pot fi definite folosind o singură clauză WITH

$$

  • Se poate defini un număr arbitrar de CTE-uri
  • CTE-urile pot fi unite prin JOIN
  • Se pot efectua operații complexe într-un CTE
  • Rezultatele unui CTE pot fi utilizate în altul
WITH <cte-name> AS (

    <query>

), <another-cte-name> (

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

-- These CTE's could be JOIN'd 
SELECT ... ;
Manipularea datelor în Snowflake

Cursuri cu cele mai bune rezultate

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;

Interogarea devine mai ușor de înțeles!

Manipularea datelor în Snowflake

Cursuri cu cele mai bune rezultate

Seturile de rezultate temporare combinate pentru a forma rezultatul final cu mediile și numele profesorilor pentru fiecare curs

Manipularea datelor în Snowflake

Profesori titulari

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;
Manipularea datelor în Snowflake

Profesori titulari

Rezultatul unei interogări pentru a găsi vechimea profesorilor și cea mai mare medie a cursurilor lor

Manipularea datelor în Snowflake

Să exersăm!

Manipularea datelor în Snowflake

Preparing Video For Download...