Window

LAG

DuckDBDuckDB

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

Tipe hasil: Sama dengan tipe expressionDiperbarui: 6 Jan 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.