0Pricing
SQL Academy · Ders

LAG, LEAD ve Zaman Serisi Kalıpları

Her satırı LAG ve LEAD ile önceki veya sonraki kardeşiyle karşılaştırın ve dönemler arası farklar oluşturun.

LAG, LEAD ve Zaman Serisi Kalıpları, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 3. 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 ve LEAD: Geriye / İleriye Bakma

Bunlar pencere içindeki komşu satırlara erişir:

  • LAG(col, n, default) — geçerli satırdan n satır önceki değer
  • LEAD(col, n, default) — n satır sonraki değer

Önceki Satır

Aynı kullanıcıya ait her siparişi önceki siparişle karşılaştırın:

SELECT id, user_id, created_at, total,
       LAG(total) OVER (
         PARTITION BY user_id ORDER BY created_at
       ) AS prev_total
FROM orders;

Günden Güne Değişim

Önceki güne göre fark:

SELECT day, revenue,
       revenue - LAG(revenue) OVER (ORDER BY day) AS delta
FROM daily_revenue
ORDER BY day;

Yıldan Yıla

Aylık bir dizide 12 kaydırmalı LAG:

SELECT month, revenue,
       LAG(revenue, 12) OVER (ORDER BY month) AS prev_year_revenue,
       revenue / NULLIF(LAG(revenue, 12) OVER (ORDER BY month), 0) - 1 AS yoy
FROM monthly_revenue;

Boşlukları Algılama

Eksik veriye sahip günleri bulun:

WITH d AS (
  SELECT day, LAG(day) OVER (ORDER BY day) AS prev_day FROM daily_signups
)
SELECT day, prev_day, day - prev_day AS gap_days
FROM d
WHERE day - prev_day > 1;

Oturumlara Ayırma

Boşluk bir eşiği aştığında satırları oturumlar halinde gruplayın:

WITH gaps AS (
  SELECT user_id, ts,
         CASE WHEN ts - LAG(ts) OVER (PARTITION BY user_id ORDER BY ts)
                 > INTERVAL '30 min'
              THEN 1 ELSE 0 END AS new_session
  FROM events
)
SELECT user_id, ts,
       SUM(new_session) OVER (PARTITION BY user_id ORDER BY ts) AS session_id
FROM gaps;

Gruptaki İlk ve Son

FIRST_VALUE ve LAST_VALUE, pencerenin sınırlarını alır:

SELECT id, total,
       FIRST_VALUE(total) OVER (PARTITION BY user_id ORDER BY created_at) AS first_order,
       LAST_VALUE(total)  OVER (PARTITION BY user_id ORDER BY created_at
         ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS last_order
FROM orders;
-- LAST_VALUE needs the explicit frame, otherwise default frame ends at current row.

NTH_VALUE

Bölüm içindeki N'inci değeri seçin:

SELECT id,
       NTH_VALUE(total, 2) OVER (
         PARTITION BY user_id ORDER BY total DESC
         ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
       ) AS second_largest
FROM orders;

Zaman Serisi Varsayılan Değeri

LAG'in üçüncü bağımsız değişkeni, önceki satır olmadığında kullanılacak varsayılan değerdir:

SELECT day, revenue,
       revenue - LAG(revenue, 1, 0) OVER (ORDER BY day) AS delta
FROM daily_revenue;
-- delta on first day = revenue itself (vs NULL)

Kendisiyle Birleştirmeye Eşdeğer

LAG'i kendisiyle birleştirme kullanarak yazabilirsiniz, ancak bu daha yavaş ve daha karmaşık olur. Her zaman pencere işlevlerini tercih edin.

Performans

Pencere işlevleri bölümün üzerinden bir kez geçer. Darboğaz sıralamadır — mümkün olduğunda ORDER BY sütunlarını indeksleyin.

Özet

LAG ve LEAD satırdan satıra karşılaştırma yapılmasını sağlar.

  • Bölüm içinde önceki/sonraki satır
  • Farklar, dönemden döneme karşılaştırmalar, oturumlara ayırma
  • Sınırlar için FIRST_VALUE/LAST_VALUE

Kısa Kontrol

Günden güne gelir değişimini hesaplamak istiyorsunuz. Hangi pencere işlevini kullanırsınız?

Sıkça Sorulan Sorular

“LAG, LEAD ve Zaman Serisi Kalıpları” dersi ücretsiz mi?

Evet — “LAG, LEAD ve Zaman Serisi Kalıpları” 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.

“LAG, LEAD ve Zaman Serisi Kalıpları” dersinde ne öğreneceğim?

Her satırı LAG ve LEAD ile önceki veya sonraki kardeşiyle karşılaştırın ve dönemler arası farklar oluşturun. 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 3. dersidir.

“LAG, LEAD ve Zaman Serisi Kalıpları” 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

  1. OVER, PARTITION BY, ORDER BY
  2. ROW_NUMBER, RANK, DENSE_RANK
  3. LAG, LEAD ve Zaman Serisi Kalıpları
  4. Devam Eden Toplamlar ve Hareketli Ortalamalar
← SQL Academy Sayfasına Dön