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.
Pertanyaan Umum tentang LAG
Apa itu fungsi LAG di Snowflake?
Mengakses nilai dari baris sebelumnya dalam result set berdasarkan offset tertentu. Sangat berguna untuk perbandingan dengan periode sebelumnya. Di Snowflake, fungsi LAG termasuk dalam kelompok fungsi yang sering digunakan untuk mengolah dan menganalisis data secara efisien.
Bagaimana cara menggunakan LAG di Snowflake?
Gunakan sintaks berikut: LAG(expression [, offset [, default]]) OVER ([PARTITION BY partition_expr] ORDER BY order_expr). Pastikan argumen yang dimasukkan sudah sesuai dengan tipe data yang diharapkan.
Apa nilai yang dikembalikan oleh fungsi LAG?
Fungsi LAG mengembalikan nilai bertipe Same as expression. Pastikan tipe data hasil sudah sesuai dengan kebutuhan query atau formula kamu. Jika input mengandung nilai NULL, perilaku fungsi dapat berbeda — selalu periksa dokumentasi untuk memastikan hasilnya sesuai ekspektasi.
Apa saja parameter fungsi LAG?
Fungsi ini memiliki 2 parameter wajib dan 3 parameter opsional. Parameter yang digunakan: expression (any, wajib): Kolom atau ekspresi yang nilainya akan diambil; offset (INTEGER, opsional): Berapa baris ke belakang (default: 1); default (any, opsional): Nilai default jika tidak ada baris sebelumnya; PARTITION BY (clause, opsional): Opsional. Membagi hasil ke dalam partition terpisah; ORDER BY (clause, wajib): Menentukan urutan baris untuk perhitungan LAG.