Snowflake'te Veri Türleri ve Fonksiyonlar
Jacob Roach
Field Data Engineer
WITH seniors AS (SELECT student_id, first_name FROM STUDENTS.personal_info WHERE graduation_year = 2025)SELECT ... FROM seniors
CTE’ler bir sorgunun sonuçlarını geçici olarak saklar ve bunlar daha sonra başka bir sorguda kullanılır
$$
Tek bir WITH deyimiyle birden çok geçici sonuç tanımlanabilir
$$
...), <another-cte-name> AS (...)JOIN ile birleştirinWITH <cte-name> AS ( <query> ), <another-cte-name> AS ( -- Başka bir sorgu ekleyin! <another-query> )-- Bu CTE’ler JOIN ile birleştirilebilir SELECT ... ;
-- İlk ortak tablo ifadesi WITH seniors AS ( SELECT student_id, first_name FROM STUDENTS.personal_info WHERE graduation_year = 2025 -- İkinci ortak tablo ifadesi ), final_exam_grades AS ( SELECT student_id, course_name, exam_score FROM STUDENTS.grades WHERE exam_type = 'Final' )SELECT seniors.first_name, final_exam_grades.course_name, final_exam_grades.exam_score FROM final_exam_grades -- Geçici sonuçları birleştirin JOIN seniors ON final_exam_grades.student_id = seniors.student_id
first_name | course_name | exam_score
------------ | ------------- | ------------
Ryan | Calculus I | 97
Tatiana | Biology | 98
Pankaj | English III | 92
Taylor | Python | 71
Iris | Finance | 89
Charles | Marketing | 88
...
WITH ny_schools AS ( SELECT school_id, school_name, district FROM SCHOOL.school_info WHERE school_state = 'NY' ), ny_teachers AS ( SELECT teacher_id, teacher_name, tenure, specialty FROM SCHOOLS.teachersWHERE school_id IN (SELECT school_id FROM ny_schools) -- ny_schools kayıtlarına göre filtrele) SELECT ny_teachers.teacher_name, ny_teachers.course_name, previous_courses.term FROM SCHOOLS.previous_courses JOIN ny_teachers ON previous_courses.teacher_id = ny_teachers.teacher_id AND previous_courses.course_area = ny_teachers.specialty ;
WITH ny_schools AS ( SELECT school_id, ... WHERE school_state = 'NY' ), ny_teachers AS ( SELECT ... FROM SCHOOLS.teachers-- Yukarıdaki kayıtlardaki school_id ile filtrele WHERE school_id IN ( SELECT school_id FROM ny_schools ))
$$
$$
NY içindeki school_id’leri filtreleyinny_schools içinde tutulurny_teachers içinde, kayıtları ny_schools’taki school_id ile filtreleyinJOIN da kullanılabilir vb.... -- ny_teachers CTE’sini kurma
SELECT
ny_teachers.teacher_name,
ny_teachers.course_name,
previous_courses.term
FROM SCHOOLS.previous_courses
-- Son olarak CTE’yi previous_courses tablosu ile birleştirin
JOIN ny_teachers ON
previous_courses.teacher_id = ny_teachers.teacher_id AND
previous_courses.course_area = ny_teachers.specialty
;
teacher_name | course_name | term
------------------- | ----------------------- | -------
Marcus Lee | U.S. History | H1'22
Priya Desai | Algebra II | H2'22
Elena Rodríguez | Environmental Science | H1'25
Jamal Thompson | English I | H2'21
Mei-Ling Chen | World History | H1'23
Gregory O'Malley | Calculus II | H2'24
...
Snowflake'te Veri Türleri ve Fonksiyonlar