Window
DuckDB
LAG
Mengakses nilai dari baris sebelumnya dalam partisi hasil. Sangat berguna untuk perbandingan dengan periode sebelumnya.
Tipe hasil:
Sama dengan tipe expressionDiperbarui: 16 Mei 2026Syntax
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
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;
Membandingkan revenue dengan bulan sebelumnya.
Hasil
| month | revenue | prev_month_revenue | revenue_change |
|---|---|---|---|
| 2024-01 | 10000000 | NULL | NULL |
| 2024-02 | 12000000 | 10000000 | 2000000 |
| 2024-03 | 11000000 | 12000000 | -1000000 |
Dengan Default Value
SQL
1 SELECT 2 date, 3 price, 4 LAG(price, 1, price) OVER (ORDER BY date) as prev_price 5 FROM stock_prices;
Menggunakan harga saat ini sebagai default jika tidak ada sebelumnya.
Perbandingan 7 Hari Sebelumnya
SQL
1 SELECT 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 6 FROM daily_metrics;
Week-over-week comparison dengan offset 7.
LAG per Kategori
SQL
1 SELECT 2 category, 3 month, 4 sales, 5 LAG(sales) OVER (PARTITION BY category ORDER BY month) as prev_sales 6 FROM 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'.