Window

LAG

SnowflakeSnowflake

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 2026

Syntax

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
1SELECT
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
6FROM monthly_sales;

Menampilkan revenue bulan ini vs bulan sebelumnya dan selisihnya.

Hasil
MONTHREVENUEPREV_MONTH_REVENUEREVENUE_CHANGE
2024-01100000NULLNULL
2024-0212000010000020000
2024-03115000120000-5000

Persentase Perubahan (MoM)

SQL
1SELECT
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
7FROM monthly_sales;

Menghitung persentase perubahan month-over-month.

Hasil
MONTHREVENUEPREV_REVENUEPCT_CHANGE
2024-011000001000000.00
2024-0212000010000020.00
2024-03115000120000-4.17

LAG per Customer

SQL
1SELECT
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
13FROM 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.