Common Table Expressions ขั้นสูง

การจัดการข้อมูลใน Snowflake

Jake Roach

Field Data Engineer

การกำหนด Common Table Expressions หลายรายการ

กำหนด CTE ได้มากกว่าหนึ่งรายการด้วย WITH clause เดียว

$$

  • กำหนด CTE ได้จำนวนเท่าใดก็ได้
  • JOIN CTE หลายตัวเข้าด้วยกันได้
  • ทำการประมวลผลที่ซับซ้อนภายใน CTE ได้
  • นำผลลัพธ์ของ CTE หนึ่งไปใช้ใน CTE อื่นได้
WITH <cte-name> AS (

    <query>

), <another-cte-name> (

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

-- These CTE's could be JOIN'd 
SELECT ... ;
การจัดการข้อมูลใน Snowflake

คอร์สที่มีผลการเรียนดีที่สุด

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;

คิวรีอ่านเข้าใจง่ายขึ้น!

การจัดการข้อมูลใน Snowflake

คอร์สที่มีผลการเรียนดีที่สุด

ชุดผลลัพธ์ชั่วคราวที่รวมกันเป็นผลลัพธ์สุดท้าย แสดงคะแนนเฉลี่ยและชื่อผู้สอนของแต่ละคอร์ส

การจัดการข้อมูลใน Snowflake

ผู้สอนที่มีประสบการณ์สูง

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;
การจัดการข้อมูลใน Snowflake

ผู้สอนที่มีประสบการณ์สูง

ชุดผลลัพธ์ของคิวรีที่ค้นหาระยะเวลาการสอนและคะแนนเฉลี่ยสูงสุดของแต่ละคอร์สของผู้สอน

การจัดการข้อมูลใน Snowflake

มาฝึกกันเถอะ!

การจัดการข้อมูลใน Snowflake

Preparing Video For Download...