Birden çok ortak tablo ifadesi

Snowflake'te Veri Türleri ve Fonksiyonlar

Jacob Roach

Field Data Engineer

Ortak tablo ifadeleri (CTE)

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

$$

  • Sorguları düzenlemek için kullanılır
  • Daha okunabilir ve modülerdir
  • Tek bir CTE ile sınırlı değildir
Snowflake'te Veri Türleri ve Fonksiyonlar

Birden çok CTE tanımlama

Tek bir WITH deyimiyle birden çok geçici sonuç tanımlanabilir

$$

  • ...), <another-cte-name> AS (...)
  • Tablo filtreleme ve işlemleri anlamayı kolaylaştırır
  • Birden çok geçici sonucu JOIN ile birleştirin
  • Başka bir CTE içinde alt sorgular
 WITH <cte-name> AS (

     <query>

 ), <another-cte-name> AS (

     -- Başka bir sorgu ekleyin!
     <another-query>
 )

-- Bu CTE’ler JOIN ile birleştirilebilir SELECT ... ;
Snowflake'te Veri Türleri ve Fonksiyonlar

Geçici sonuçları birleştirme

-- İ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
Snowflake'te Veri Türleri ve Fonksiyonlar

Geçici sonuçları birleştirme

             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

                                ...
Snowflake'te Veri Türleri ve Fonksiyonlar

CTE’de geçici sonucu kullanma

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.teachers

WHERE 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 ;
Snowflake'te Veri Türleri ve Fonksiyonlar

CTE’de geçici sonucu kullanma

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 )
)

$$

$$

  • Önce yalnızca NY içindeki school_id’leri filtreleyin
  • Geçici sonuç ny_schools içinde tutulur
  • ny_teachers içinde, kayıtları ny_schools’taki school_id ile filtreleyin
  • JOIN da kullanılabilir vb.
Snowflake'te Veri Türleri ve Fonksiyonlar

Öğretmen iş yüklerini uzmanlıklarıyla eşleştirme

...  -- 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
;
Snowflake'te Veri Türleri ve Fonksiyonlar

Öğretmen iş yüklerini uzmanlıklarıyla eşleştirme

         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

Hadi pratik yapalım!

Snowflake'te Veri Türleri ve Fonksiyonlar

Preparing Video For Download...