Biểu thức bảng chung nâng cao

Xử lý dữ liệu trong Snowflake

Jake Roach

Field Data Engineer

Định nghĩa nhiều biểu thức bảng chung

Có thể định nghĩa nhiều biểu thức bảng chung bằng một mệnh đề WITH

$$

  • Có thể định nghĩa số lượng CTE tùy ý
  • Có thể JOIN các CTE với nhau
  • Vẫn có thể thực hiện phép toán phức tạp trong CTE
  • Thậm chí dùng kết quả của CTE này trong CTE khác
WITH <cte-name> AS (

    <query>

), <another-cte-name> (

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

-- These CTE's could be JOIN'd 
SELECT ... ;
Xử lý dữ liệu trong Snowflake

Các khóa học có thành tích cao

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;

Truy vấn dễ hiểu hơn!

Xử lý dữ liệu trong Snowflake

Các khóa học có thành tích cao

Các tập kết quả tạm thời kết hợp để tạo đầu ra cuối cùng gồm điểm trung bình và tên giáo viên cho mỗi khóa học

Xử lý dữ liệu trong Snowflake

Giáo viên có thâm niên

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;
Xử lý dữ liệu trong Snowflake

Giáo viên có thâm niên

Tập kết quả của truy vấn tìm thâm niên giáo viên và điểm trung bình cao nhất của khóa học

Xử lý dữ liệu trong Snowflake

Luyện tập nào!

Xử lý dữ liệu trong Snowflake

Preparing Video For Download...