Learn
← Previous Next →

Hari 28: Window Functions — LAG, LEAD & SUM Kumulatif

60 min Last updated 25 Mar 2026

LAG & LEAD — Akses Baris Sebelumnya/Berikutnya

-- LAG: ambil nilai dari baris sebelumnya
-- LEAD: ambil nilai dari baris berikutnya

-- Tren pesanan: bandingkan total_harga dengan pesanan sebelumnya per pelanggan
SELECT
  pelanggan_id,
  tanggal_pesan,
  total_harga,
  LAG(total_harga) OVER (PARTITION BY pelanggan_id ORDER BY tanggal_pesan) AS pesanan_sebelumnya,
  total_harga - LAG(total_harga) OVER (PARTITION BY pelanggan_id ORDER BY tanggal_pesan) AS selisih
FROM pesanan
ORDER BY pelanggan_id, tanggal_pesan;

SUM Kumulatif (Running Total)

-- Akumulasi pendapatan dari pesanan selesai
SELECT
  id,
  tanggal_pesan,
  total_harga,
  SUM(total_harga) OVER (ORDER BY tanggal_pesan) AS pendapatan_kumulatif
FROM pesanan
WHERE status_pesanan = 'selesai'
ORDER BY tanggal_pesan;

NTILE — Bagi ke N Kelompok

-- Bagi pelanggan ke 4 kuartil berdasarkan umur
SELECT nama, umur,
  NTILE(4) OVER (ORDER BY umur) AS kuartil_umur
FROM pelanggan ORDER BY umur;

💡 Notice: SUM() OVER (ORDER BY col) otomatis menjadi running total karena framing default-nya adalah ROWS UNBOUNDED PRECEDING.

Assignment

Hitung running total (pendapatan kumulatif) dari semua pesanan yang sudah selesai, diurutkan dari tanggal terlama. Tampilkan: id, tanggal_pesan, total_harga, pendapatan_kumulatif.

Expected output:

14 row(s) returned
SQL query.sql
Solution
Output
⏳ Loading DB...