OVER, PARTITION BY, ORDER BY
Pencere işlevi modelini anlayın: OVER, PARTITION BY (gruplama), ORDER BY (sıralama) ve bunun GROUP BY'dan farkı.
OVER, PARTITION BY, ORDER BY, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Pencere İşlevi Nedir?
Bir pencere işlevi, geçerli satırla ilişkili bir satır kümesi üzerinden bir değer hesaplar; GROUP BY gibi sonucu daraltmaz. Her satırı korur VE bir toplama sütunu elde edersiniz.
Temel Örnek
Her satırda, tablonun tamamındaki ortalama sipariş tutarı:
SELECT id, total,
AVG(total) OVER () AS avg_total
FROM orders;OVER Yan Tümcesi
OVER (...) yan tümcesi pencereyi tanımlar. Boş parantezler "sonuç kümesinin tamamı" anlamına gelir.
SELECT id, total,
SUM(total) OVER () AS grand_total
FROM orders;PARTITION BY: Pencereyi Gruplama
GROUP BY gibidir, ancak satırlar daraltılmaz:
SELECT id, user_id, total,
SUM(total) OVER (PARTITION BY user_id) AS user_total
FROM orders;
-- Every order keeps its row; user_total is the same for all of one user's orders.Pencerede ORDER BY
OVER içindeki ORDER BY, art arda yapılan hesaplamalar için satırların sırasını tanımlar:
SELECT id, user_id, total,
SUM(total) OVER (PARTITION BY user_id ORDER BY created_at) AS running_total
FROM orders;
-- Running total per user, ordered by date.Pencere ve GROUP BY
Yan yana karşılaştırma:
-- GROUP BY: 1 row per user
SELECT user_id, SUM(total) FROM orders GROUP BY user_id;
-- Window: 1 row per order, with user total alongside
SELECT id, user_id, total,
SUM(total) OVER (PARTITION BY user_id)
FROM orders;Her Satır, Farklı Bir Çerçeve
"Çerçeve", işlevin baktığı bölüm içindeki satır kümesidir. ORDER BY içeren varsayılan çerçeve "başlangıçtan geçerli satıra kadar"dır — artan toplamları sağlayan şey budur.
Adlandırılmış Pencereler
Birden çok işlev aynı pencereyi paylaşıyorsa pencereyi bir kez adlandırın:
SELECT id, user_id, total,
SUM(total) OVER w AS running_sum,
AVG(total) OVER w AS running_avg
FROM orders
WINDOW w AS (PARTITION BY user_id ORDER BY created_at);Çoğu Toplama İşlevi Pencere İşlevi Olarak Çalışır
COUNT, SUM, AVG, MIN, MAX — tümü bir pencere üzerinde kullanılabilir. Özel pencere işlevleri arasında ROW_NUMBER, RANK, LAG/LEAD, NTILE ve diğerleri bulunur.
Pencere İşlevleri WHERE'den Sonra Çalışır
Mantıksal sıra: FROM → WHERE → GROUP BY → HAVING → window functions → SELECT → ORDER BY → LIMIT. Bu nedenle WHERE, pencereler hesaplanmadan önce filtreleme yapar.
Performansla İlgili Noktalar
Pencere işlevleri sıralama (veya karma oluşturma) gerektirir. Büyük bölümlerde, (bölüm, sıralama) sütunları üzerindeki bir indeks sıralama adımını önler.
Özet
Pencere işlevleri satır başına toplama değerleri ekler.
- OVER () = sonucun tamamı
- PARTITION BY = pencereyi gruplama
- Pencerede ORDER BY = artan hesaplamaları etkinleştirme
Kısa Kontrol
SUM(x) OVER (PARTITION BY user_id) neyi hesaplar?
Sıkça Sorulan Sorular
“OVER, PARTITION BY, ORDER BY” dersi ücretsiz mi?
Evet — “OVER, PARTITION BY, ORDER BY” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“OVER, PARTITION BY, ORDER BY” dersinde ne öğreneceğim?
Pencere işlevi modelini anlayın: OVER, PARTITION BY (gruplama), ORDER BY (sıralama) ve bunun GROUP BY'dan farkı. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“OVER, PARTITION BY, ORDER BY” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- OVER, PARTITION BY, ORDER BY
- ROW_NUMBER, RANK, DENSE_RANK
- LAG, LEAD ve Zaman Serisi Kalıpları
- Devam Eden Toplamlar ve Hareketli Ortalamalar