Window
Snowflake
LAG
Mengakses nilai dari baris sebelumnya dalam result set berdasarkan offset tertentu. Sangat berguna untuk perbandingan dengan periode sebelumnya.
Tipe hasil:
Same as expressionDiperbarui: 6 Jan 2026Syntax
SQL
LAG(expression [, offset [, default]]) OVER ([PARTITION BY partition_expr] ORDER BY order_expr)Parameter
expressionanywajib
Kolom atau ekspresi yang nilainya akan diambil
ORDER BYclausewajib
Menentukan urutan baris untuk perhitungan LAG
offsetINTEGERopsional
Berapa baris ke belakang (default: 1)
Default: 1
defaultanyopsional
Nilai default jika tidak ada baris sebelumnya
PARTITION BYclauseopsional
Opsional. Membagi hasil ke dalam partition terpisah
Contoh Penggunaan
Perbandingan dengan Bulan Sebelumnya
SQL
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.
Hasil
| MONTH | REVENUE | PREV_MONTH_REVENUE | REVENUE_CHANGE |
|---|---|---|---|
| 2024-01 | 100000 | NULL | NULL |
| 2024-02 | 120000 | 100000 | 20000 |
| 2024-03 | 115000 | 120000 | -5000 |
Persentase Perubahan (MoM)
SQL
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.
Hasil
| MONTH | REVENUE | PREV_REVENUE | PCT_CHANGE |
|---|---|---|---|
| 2024-01 | 100000 | 100000 | 0.00 |
| 2024-02 | 120000 | 100000 | 20.00 |
| 2024-03 | 115000 | 120000 | -4.17 |
LAG per Customer
SQL
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.