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