0Pricing
SQL Academy · Pelajaran

Lag/Lead dengan Jendela Bingkai

Gabungkan LAG/LEAD dengan jendela bingkai untuk menghitung selisih antarperiode dan mendeteksi celah dalam deret waktu

Lag/Lead dengan Jendela Bingkai adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Ringkasan LAG/LEAD

LAG(col, n) mengembalikan nilai n baris sebelum baris saat ini dalam jendela. LEAD(col, n) melihat ke depan.

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

LAG dengan Nilai Bawaan

Argumen ketiga adalah nilai bawaan ketika tidak ada tetangga:

LAG(revenue, 1, 0) OVER (ORDER BY day)
-- Returns 0 instead of NULL for the very first row.

Menghitung Selisih

Perubahan dari hari ke hari:

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

LAG Multi-Langkah

Bandingkan dengan N hari yang lalu — berguna untuk perbandingan minggu ke minggu dan tahun ke tahun:

LAG(revenue, 7) OVER (ORDER BY day)   -- 7 days ago
LAG(revenue, 365) OVER (ORDER BY day) -- 1 year ago

LEAD untuk Slot Prediksi

Pola "Apa acara berikutnya?":

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;

Pola per Pengguna

LAG/LEAD mengikuti PARTITION BY:

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.

Mendeteksi Perubahan Status

Gabungkan LAG dengan CASE:

SELECT id, status,
  CASE WHEN status <> LAG(status) OVER (ORDER BY ts) THEN 'changed' ELSE 'same' END
FROM orders;

FIRST_VALUE / LAST_VALUE

Nilai pertama atau terakhir dalam bingkai:

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_status

NTH_VALUE

Nilai ke-N dari jendela yang diurutkan:

NTH_VALUE(revenue, 3) OVER (
  ORDER BY revenue DESC
  ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
-- Third-highest revenue value.

Fungsi Bingkai per Grup

Gabungkan LAG dengan PARTITION BY untuk mendapatkan tetangga berdasarkan grup:

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;

Kinerja

Fungsi jendela mengurutkan satu kali per partisi. Indeks kolom (PARTITION BY, ORDER BY) jika partisinya besar.

Ringkasan

LAG/LEAD membuat perbandingan antarbaris menjadi murah.

  • Nilai bawaan menghindari NULL
  • Gabungkan dengan CASE untuk mendeteksi perubahan status
  • FIRST_VALUE/LAST_VALUE/NTH_VALUE melengkapi kelompok fungsi ini

Pemeriksaan Singkat

Anda ingin setiap baris menyertakan jeda (dalam detik) hingga acara pengguna berikutnya. Fungsi apa yang digunakan?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Lag/Lead dengan Jendela Bingkai” gratis?

Ya — teks lengkap “Lag/Lead dengan Jendela Bingkai” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Lag/Lead dengan Jendela Bingkai”?

Gabungkan LAG/LEAD dengan jendela bingkai untuk menghitung selisih antarperiode dan mendeteksi celah dalam deret waktu Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Lag/Lead dengan Jendela Bingkai” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Klausa Bingkai: ROWS vs RANGE
  2. Lag/Lead dengan Jendela Bingkai
  3. Pengelompokan dengan NTILE dan Cume_Dist
  4. Pola Pelaporan di Dunia Nyata
← Kembali ke SQL Academy