Window

LAG

DuckDBDuckDB

Mengakses nilai dari baris sebelumnya dalam partisi hasil. Sangat berguna untuk perbandingan dengan periode sebelumnya.

Tipe hasil: Sama dengan tipe expressionDiperbarui: 16 Mei 2026

Syntax

SQL
LAG(expression [, offset [, default]]) OVER ([PARTITION BY col] ORDER BY col)

Parameter

expressionanywajib

Kolom atau ekspresi yang nilainya akan diambil dari baris sebelumnya

ORDER BYclausewajib

Menentukan urutan untuk menentukan 'sebelumnya'

offsetINTEGERopsional

Jumlah baris ke belakang (default: 1)

Default: 1

defaultsame as expressionopsional

Nilai default jika tidak ada baris sebelumnya

PARTITION BYclauseopsional

Opsional. Membagi hasil menjadi partisi

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;

Membandingkan revenue dengan bulan sebelumnya.

Hasil
monthrevenueprev_month_revenuerevenue_change
2024-0110000000NULLNULL
2024-0212000000100000002000000
2024-031100000012000000-1000000

Dengan Default Value

SQL
1SELECT
2 date,
3 price,
4 LAG(price, 1, price) OVER (ORDER BY date) as prev_price
5FROM stock_prices;

Menggunakan harga saat ini sebagai default jika tidak ada sebelumnya.

Perbandingan 7 Hari Sebelumnya

SQL
1SELECT
2 date,
3 daily_users,
4 LAG(daily_users, 7) OVER (ORDER BY date) as users_7_days_ago,
5 daily_users - LAG(daily_users, 7) OVER (ORDER BY date) as wow_change
6FROM daily_metrics;

Week-over-week comparison dengan offset 7.

LAG per Kategori

SQL
1SELECT
2 category,
3 month,
4 sales,
5 LAG(sales) OVER (PARTITION BY category ORDER BY month) as prev_sales
6FROM category_sales;

Perbandingan per kategori dengan bulan sebelumnya.

Pertanyaan Umum tentang LAG

Apa itu fungsi LAG di DuckDB?
Mengakses nilai dari baris sebelumnya dalam partisi hasil. Sangat berguna untuk perbandingan dengan periode sebelumnya. Di DuckDB, fungsi LAG termasuk dalam kelompok fungsi yang sering digunakan untuk mengolah dan menganalisis data secara efisien.
Bagaimana cara menggunakan LAG di DuckDB?
Gunakan sintaks berikut: LAG(expression [, offset [, default]]) OVER ([PARTITION BY col] ORDER BY col). Pastikan argumen yang dimasukkan sudah sesuai dengan tipe data yang diharapkan.
Apa nilai yang dikembalikan oleh fungsi LAG?
Fungsi LAG mengembalikan nilai bertipe Sama dengan tipe 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 dari baris sebelumnya; offset (INTEGER, opsional): Jumlah baris ke belakang (default: 1); default (same as expression, opsional): Nilai default jika tidak ada baris sebelumnya; PARTITION BY (clause, opsional): Opsional. Membagi hasil menjadi partisi; ORDER BY (clause, wajib): Menentukan urutan untuk menentukan 'sebelumnya'.