Kiểu dữ liệu và Hàm trong Snowflake
Jake Roach
Field Data Engineer
course_name | exam_type | avg_exam_score
------------- | ----------- | ----------------
Calculus I | Exam 1 | 81.78
Calculus I | Exam 2 | 83.55
Calculus I | Final | 80.93
Finance | Exam 1 | 89.47
Finance | Exam 2 | 90.39
Finance | Final | 89.69
Marketing | Exam 1 | 94.11
Marketing | Exam 2 | 93.29
Marketing | Final | 93.81
course_name | "Exam 1" | "Exam 2" | "Final"
------------- | ------------- | ------------- | ---------
Calculus I | 81.78 | 83.55 | 80.93
Finance | 89.47 | 90.39 | 89.69
Marketing | 94.11 | 93.29 | 93.81
SELECT * FROM SCHEMA.TABLEPIVOT(-- Hàm tổng hợp SUM(<1>)-- Chỉ định hàng cần xoay thành cột FOR <2> IN (ANY ORDER BY <2>) -- Không cần GROUP BY! );
PIVOT cung cấp cách khác để xuất dữ liệu tổng hợp bằng cách xoay giá trị thành cột
SELECT * có thể dùng EXCLUDEPIVOT đặt sau FROM ...ANY giá trị trong <2>$$
<1>: trường cần tổng hợp
<2>: giá trị hàng cần chuyển thành cột
WITH exam_grades AS ( SELECT ..., exam_score, exam_type FROM SCHEMA.TABLE WHERE ... )SELECT * -- Cũng có thể dùng EXCLUDE FROM exam_grades PIVOT( AVG(exam_score) FOR exam_type IN (ANY ORDER BY exam_type) );
Trước tiên, định nghĩa CTE trước khi dùng PIVOT!
$$
SELECT * FROM <cte>
$$
$$
$$
exam_score: trường cần tổng hợp
exam_type: giá trị hàng chuyển thành cột
WITH exam_grades AS ( SELECT course_name, course_abbreviation, exam_score, exam_type FROM STUDENTS.grades WHERE course_level = '101' )SELECT * EXCLUDE course_abbreviation -- Loại course_abbrevation khỏi kết quả FROM exam_gradesPIVOT( AVG(exam_score) FOR exam_type IN (ANY ORDER BY exam_type) );
course_name | exam_type | avg_exam_score
------------- | ------------- | ----------------
Calculus I | Exam 1 | 81.78
Calculus I | Exam 2 | 83.55
Calculus I | Final | 80.93
Finance | Midterm 1 | 89.47
...
course_name | "Exam 1 " | "Exam 2" | "Final"
------------- | ------------- | ------------- | ---------
Calculus I | 81.78 | 83.55 | 80.93
Finance | 89.47 | 90.39 | 89.69
Marketing | 94.11 | 93.29 | 93.81
Kiểu dữ liệu và Hàm trong Snowflake