EMZETT.
Giriş yap

SQL pencere işlevleri (window functions)

Kısaca: Pencere işlevleri, ilişkili satırlardan oluşan bir grup üzerinde, satırları tek bir satırda birleştirmeden hesap yapar. Böylece her satır, örneğin kendi sırasını veya kümülatif toplamı alır.

Biraz daha ayrıntılı: Grup başına bir satır döndüren GROUP BY’ın aksine pencere işlevleri tüm satırları korur. “Pencere” OVER (...) ile tanımlanır.

Ayrıntılı

  • Yapı: işlev() OVER (PARTITION BY sütun ORDER BY sütun). PARTITION BY gruplara böler, ORDER BY içeride sıralar.
  • Sıralama: ROW_NUMBER() (ardışık), RANK() (beraberlikte boşluk), DENSE_RANK() (boşluksuz).
  • Komşular: LAG(sütun) ve LEAD(sütun), önceki veya sonraki satırın değerini getirir; örneğin bir önceki aya göre değişimler için.
  • Kümülatif toplamlar: SUM(tutar) OVER (ORDER BY tarih). ROWS BETWEEN 2 PRECEDING AND CURRENT ROW ile hareketli ortalama elde edilir.
  • Tipik görev: Müşteri başına en yeni satır: ROW_NUMBER() OVER (PARTITION BY musteri ORDER BY tarih DESC) ve sonra = 1 filtrele.
  • Not: Pencere işlevlerine WHERE içinde izin verilmez. Bunun için alt sorgu veya CTE kullan.

Ayrıca bak: SQL