Çerçeve Pencereleriyle LAG/LEAD
Dönem farklarını hesaplamak ve zaman serilerindeki boşlukları tespit etmek için LAG/LEAD'i çerçeve pencereleriyle birleştirin.
Çerçeve Pencereleriyle LAG/LEAD, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. 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.
LAG/LEAD Özeti
LAG(col, n), pencere içindeki geçerli satırdan n satır önceki değeri döndürür. LEAD(col, n) ilerideki satıra bakar.
SELECT day, revenue,
LAG(revenue) OVER (ORDER BY day) AS prev_day_revenue
FROM daily_revenue;Varsayılan Değerle LAG
Üçüncü bağımsız değişken, komşu satır bulunmadığında kullanılacak varsayılan değerdir:
LAG(revenue, 1, 0) OVER (ORDER BY day)
-- Returns 0 instead of NULL for the very first row.Farkları Hesaplama
Günden güne değişim:
SELECT day, revenue,
revenue - LAG(revenue, 1, 0) OVER (ORDER BY day) AS delta
FROM daily_revenue;Çok Adımlı LAG
N gün önceyle karşılaştırın — haftadan haftaya ve yıldan yıla karşılaştırmalar için kullanışlıdır:
LAG(revenue, 7) OVER (ORDER BY day) -- 7 days ago
LAG(revenue, 365) OVER (ORDER BY day) -- 1 year agoTahmin Aralıkları için LEAD
"Sıradaki olay nedir?" türündeki kalıplar:
SELECT id, ts,
LEAD(ts) OVER (PARTITION BY user_id ORDER BY ts) AS next_ts,
LEAD(ts) OVER (PARTITION BY user_id ORDER BY ts) - ts AS gap_to_next
FROM events;Kullanıcı Başına Kalıplar
LAG/LEAD, PARTITION BY'ı dikkate alır:
SELECT user_id, ts, action,
LAG(action) OVER (PARTITION BY user_id ORDER BY ts) AS prev_action
FROM events;
-- prev_action is the user's previous event, not globally.Durum Değişikliklerini Algılama
LAG'ı CASE ile birleştirin:
SELECT id, status,
CASE WHEN status <> LAG(status) OVER (ORDER BY ts) THEN 'changed' ELSE 'same' END
FROM orders;FIRST_VALUE / LAST_VALUE
Çerçeve içindeki ilk veya son değer:
FIRST_VALUE(status) OVER (PARTITION BY order_id ORDER BY ts) AS first_status
-- The status when the order was first seen.
LAST_VALUE(status) OVER (
PARTITION BY order_id ORDER BY ts
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS final_statusNTH_VALUE
Sıralanmış bir penceredeki N'inci değer:
NTH_VALUE(revenue, 3) OVER (
ORDER BY revenue DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
-- Third-highest revenue value.Grup Başına Çerçeve İşlevleri
Gruplandırılmış komşu satırlar için LAG'ı PARTITION BY ile birleştirin:
SELECT user_id, ts, page,
LAG(page) OVER (PARTITION BY user_id ORDER BY ts) AS prev_page,
LEAD(page) OVER (PARTITION BY user_id ORDER BY ts) AS next_page
FROM page_views;Performans
Pencere işlevleri her bölüm için bir kez sıralama yapar. Bölümler büyük olduğunda (PARTITION BY, ORDER BY) sütunları için dizin oluşturun.
Özet
LAG/LEAD, satırdan satıra karşılaştırmayı düşük maliyetli hâle getirir.
- Varsayılan değer NULL kullanımını önler
- Durum değişikliklerini algılamak için CASE ile birleştirin
- FIRST_VALUE/LAST_VALUE/NTH_VALUE ailesini tamamlar
Hızlı Kontrol
Her satıra, kullanıcının bir sonraki olayına kadar olan süreyi (saniye cinsinden) eklemek istiyorsunuz. Hangi işlevi kullanırsınız?
Sıkça Sorulan Sorular
“Çerçeve Pencereleriyle LAG/LEAD” dersi ücretsiz mi?
Evet — “Çerçeve Pencereleriyle LAG/LEAD” 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.
“Çerçeve Pencereleriyle LAG/LEAD” dersinde ne öğreneceğim?
Dönem farklarını hesaplamak ve zaman serilerindeki boşlukları tespit etmek için LAG/LEAD'i çerçeve pencereleriyle birleştirin. 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 2. dersidir.
“Çerçeve Pencereleriyle LAG/LEAD” 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
- Çerçeve Maddeleri: ROWS ve RANGE
- Çerçeve Pencereleriyle LAG/LEAD
- NTILE ve Cume_Dist ile Kovalara Ayırma
- Gerçek Dünya Raporlama Kalıpları