İçeriğe atla
CodeItRaw
SQL: Pencere Fonksiyonları

Ders 1/1

GROUP BY satırları tek satıra indirir: türün ortalamasını öğrenirsin ama kitaplar kaybolur. Pencere fonksiyonu aynı hesabı yapar ve satırları yerinde bırakır: her kitabın yanına kendi türünün ortalaması, ya da türü içindeki sırası yazılır.

SELECT title, genre, price,
RANK() OVER (PARTITION BY genre ORDER BY price DESC) AS place
FROM books;
OVER (...) fonksiyonun hangi satırlara bakacağını söyler. PARTITION BY genre "her tür kendi içinde", ORDER BY price DESC "pahalıdan ucuza" demektir. RANK() o sıradaki yeri verir; eşit fiyatlar aynı yeri paylaşır ve ardından gelen sıra atlanır (1, 1, 3). Atlamasın istersen DENSE_RANK(), eşitleri de ayırsın istersen ROW_NUMBER().

Pencerede ORDER BY olunca toplama fonksiyonları birikimli çalışır: SUM(amount) OVER (ORDER BY month) her ayın yanına o aya kadarki toplamı yazar. LAG(amount) OVER (ORDER BY month) bir önceki satırın değerini getirir; ikisini çıkarırsan aydan aya değişimi bulursun. İlk satırın öncesi olmadığı için LAG orada NULL verir.

Görevler

Görevler sırayla açılır. Hepsini çözünce sonraki ders açılır.

Bu dersin görevleri, önceki dersler bitince açılır. Anlatımı şimdiden okuyabilirsin.

  1. 01

    Departman içi sıra

    SQL sorgusu

  2. 02

    Kümülatif toplam

    SQL sorgusu

  3. 03

    Aydan aya

    SQL sorgusu

Sırayı beklemeden çözmek istersen bütün problemler kilitsiz açık: Problemler listesi