Mengakses nilai dari baris sebelumnya dalam result set berdasarkan offset tertentu. Sangat berguna untuk perbandingan dengan periode sebelumnya.
Same as expressionDiperbarui: 12 Jul 2026LAG(expression [, offset [, default]]) OVER ([PARTITION BY partition_expr] ORDER BY order_expr)Kolom atau ekspresi yang nilainya akan diambil
Menentukan urutan baris untuk perhitungan LAG
Berapa baris ke belakang (default: 1)
Default: 1
Nilai default jika tidak ada baris sebelumnya
Opsional. Membagi hasil ke dalam partition terpisah
1 SELECT 2 month, 3 revenue, 4 LAG(revenue) OVER (ORDER BY month) as prev_month_revenue, 5 revenue - LAG(revenue) OVER (ORDER BY month) as revenue_change 6 FROM monthly_sales;
Menampilkan revenue bulan ini vs bulan sebelumnya dan selisihnya.
| MONTH | REVENUE | PREV_MONTH_REVENUE | REVENUE_CHANGE |
|---|---|---|---|
| 2024-01 | 100000 | NULL | NULL |
| 2024-02 | 120000 | 100000 | 20000 |
| 2024-03 | 115000 | 120000 | -5000 |
1 SELECT 2 month, 3 revenue, 4 LAG(revenue, 1, revenue) OVER (ORDER BY month) as prev_revenue, 5 ROUND((revenue - LAG(revenue, 1, revenue) OVER (ORDER BY month)) / 6 NULLIF(LAG(revenue, 1, revenue) OVER (ORDER BY month), 0) * 100, 2) as pct_change 7 FROM monthly_sales;
Menghitung persentase perubahan month-over-month.
| MONTH | REVENUE | PREV_REVENUE | PCT_CHANGE |
|---|---|---|---|
| 2024-01 | 100000 | 100000 | 0.00 |
| 2024-02 | 120000 | 100000 | 20.00 |
| 2024-03 | 115000 | 120000 | -4.17 |
1 SELECT 2 customer_id, 3 order_date, 4 order_total, 5 LAG(order_date) OVER ( 6 PARTITION BY customer_id 7 ORDER BY order_date 8 ) as prev_order_date, 9 DATEDIFF('DAY', 10 LAG(order_date) OVER (PARTITION BY customer_id ORDER BY order_date), 11 order_date 12 ) as days_between_orders 13 FROM orders;
Menghitung jarak hari antar order untuk setiap customer.
Sudah paham LAG? Latih langsung di browser
Latihan interaktif, langsung di browser.