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 BYgruplara böler,ORDER BYiçeride sıralar. - Sıralama:
ROW_NUMBER()(ardışık),RANK()(beraberlikte boşluk),DENSE_RANK()(boşluksuz). - Komşular:
LAG(sütun)veLEAD(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 ROWile 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= 1filtrele. - Not: Pencere işlevlerine
WHEREiçinde izin verilmez. Bunun için alt sorgu veya CTE kullan.
Ayrıca bak: SQL