Alt sorgular ve Ortak Tablo İfadeleri

Snowflake SQL'e Giriş

George Boorman

Senior Curriculum Manager, DataCamp

Alt sorgulama

  • İç içe sorgular
  • FROM, WHERE, HAVING veya SELECT ifadelerinde kullanılır
  • Örnek:
    SELECT column1 
    FROM table1 
    WHERE column1 = (SELECT column2 FROM table2 WHERE condition)
    
  • Türler: İlişkili ve ilişkisiz alt sorgular
Snowflake SQL'e Giriş

İlişkisiz alt sorgu

-- Ana sorgu, alt sorguda bulunan en yüksek fiyata sahip pizzaları döndürür
SELECT pizza_id
FROM pizzas
-- En yüksek pizza fiyatını belirleyen ilişkisiz alt sorgu
WHERE price = (
    SELECT MAX(price)
    FROM pizzas
)
  • Alt sorgu, ana sorguyla etkileşmez
Snowflake SQL'e Giriş

İlişkili alt sorgu

  • Alt sorgu, ana sorgudaki sütunlara başvurur
SELECT pt.name, 
       pz.price, 
       pt.category
FROM pizzas AS pz
JOIN pizza_type AS pt 
    ON pz.pizza_type_id = pt.pizza_type_id
WHERE pz.price = (
  -- Her pizza kategorisi için azami fiyatı belirler
    SELECT MAX(p2.price) -- Azami fiyat
    FROM pizzas AS p2
    WHERE -- İlişkili: dış sorgu sütununu kullanır 
      p2.pizza_type_id = pz.pizza_type_id
)
Snowflake SQL'e Giriş

Ortak Tablo İfadeleri

Genel sözdizimi:

-- WITH anahtar sözcüğü
WITH cte1 AS ( -- CTE adı
        SELECT col_1, col_2
            FROM table1
    )
    ...
SELECT ... 
FROM cte1 -- CTE'yi sorgula
;
Snowflake SQL'e Giriş

Ortak Tablo İfadeleri

WITH max_price AS ( -- max_price adlı CTE
    SELECT pizza_type_id, 
           MAX(price) AS max_price
    FROM pizzas
    GROUP BY pizza_type_id
)

-- Ana sorgu SELECT pt.name, pz.price, pt.category FROM pizzas AS pz JOIN pizza_type AS pt ON pz.pizza_type_id = pt.pizza_type_id JOIN max_price AS mp -- max_price CTE'si ile join ON pt.pizza_type_id = mp.pizza_type_id WHERE pz.price < mp.max_price -- Fiyatı max_price CTE sütunuyla karşılaştır
Snowflake SQL'e Giriş

Birden çok CTE

-- Virgülle ayrılmış birden çok CTE tanımlayın
WITH cte1 AS (
    SELECT ...
    FROM ...
),

cte2 AS ( SELECT ... FROM ... )
-- Her iki CTE'yi birleştiren ana sorgu SELECT ... FROM cte1 JOIN cte2 ON ... WHERE ...
Snowflake SQL'e Giriş

Neden CTE kullanılır?

  • Karmaşık işlemleri yönetme
  • Modüler
  • Okunabilir
  • Yeniden kullanılabilir
Snowflake SQL'e Giriş

Hadi pratik yapalım!

Snowflake SQL'e Giriş

Preparing Video For Download...