Áp dụng logic điều kiện trong Snowflake

Xử lý dữ liệu trong Snowflake

Jake Roach

Field Data Engineer

Tổng hợp với CASE

Truy vấn với CASE vẫn có thể dùng hàm tổng hợp.

  • SUM()
  • AVG()
  • MIN()
  • MAX()
  • ...
  • MODE()

$$

Nhớ thêm GROUP BY!

Khung CASE có tổng hợp và nhóm

Xử lý dữ liệu trong Snowflake

Tổng hợp với CASE

SELECT
    CASE
        WHEN month_num IN (12, 1, 2) THEN 'Winter'
        WHEN month_num IN (3, 4, 5) THEN 'Spring'
        WHEN month_num in (6, 7, 8) THEN 'Summer'
        ELSE 'Fall'
    END AS season,

AVG(temperature) AS average_temperature, -- Manipulate data with AVG()
year_num FROM weather GROUP BY season, year_num; -- Remember to group by non-aggregated fields
Xử lý dữ liệu trong Snowflake

Tổng hợp với CASE

Kết quả truy vấn tìm nhiệt độ trung bình cho từng mùa và năm

Xử lý dữ liệu trong Snowflake

Gộp các trường từ CASE

SELECT
    season,
    AVG(
        CASE
            WHEN season = 'Winter' THEN temperature - 30
            WHEN season IN ('Spring', 'Fall') THEN temperature - 60
            WHEN season = 'Summer' THEN temperature - 75
        END
    ) AS relation_to_average_temperature
FROM weather
GROUP BY season;
Xử lý dữ liệu trong Snowflake

Gộp các trường từ CASE

Bảng hiển thị quan hệ giữa nhiệt độ trung bình theo mùa

Xử lý dữ liệu trong Snowflake

JOIN

SELECT
    ...

    -- Define a CASE statement
    CASE ...

FROM <left_table>

-- JOIN new records to existing table
LEFT JOIN <right_table> 
    ... 
;

Có thể tạo CASE bằng dữ liệu JOIN từ hai bảng khác nhau.

  • Dùng cột từ nhiều bảng trong một CASE
  • LEFT, RIGHT, INNER, OUTER, v.v.
  • Kết hợp với công cụ khác, gồm hàm tổng hợp

$$

$$

                                          Hãy xem thử!

Xử lý dữ liệu trong Snowflake

Xác định trạng thái tín chỉ đại học

SELECT
    students.student_name,
    student_courses.course_name,

-- Evaluate both the student's grade number and grade for the course CASE WHEN students.grade_num = 12 AND student_courses.grade > 90 THEN 'College Credit Eligible' ELSE 'Too Early for College Credit' END AS college_credit_status
FROM student_courses LEFT JOIN students ON student_courses.student_id = students.student_id;
Xử lý dữ liệu trong Snowflake

Xác định trạng thái tín chỉ đại học

Kết quả truy vấn trên bảng students và student_courses đã JOIN

Xử lý dữ liệu trong Snowflake

Hãy luyện tập!

Xử lý dữ liệu trong Snowflake

Preparing Video For Download...