Window

ROW_NUMBER

DuckDBDuckDB

Memberikan nomor urut unik ke setiap baris dalam partisi hasil query. Nomor dimulai dari 1 dan bertambah secara berurutan.

Tipe hasil: BIGINTDiperbarui: 6 Jan 2026

Syntax

SQL
ROW_NUMBER() OVER ([PARTITION BY col] ORDER BY col)

Parameter

ORDER BYclausewajib

Menentukan urutan penomoran baris

PARTITION BYclauseopsional

Opsional. Membagi hasil menjadi partisi untuk penomoran terpisah

Contoh Penggunaan

Penomoran Sederhana

SQL
1SELECT
2 ROW_NUMBER() OVER (ORDER BY name) as row_num,
3 name,
4 department
5FROM employees;

Memberikan nomor urut berdasarkan nama.

Hasil
row_numnamedepartment
1AniMarketing
2BudiEngineering
3CitraEngineering

Penomoran per Partisi

SQL
1SELECT
2 department,
3 name,
4 salary,
5 ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) as rank_in_dept
6FROM employees;

Menomori karyawan dalam setiap department berdasarkan gaji.

Hasil
departmentnamesalaryrank_in_dept
EngineeringBudi150000001
EngineeringCitra120000002
MarketingAni100000001

Top N per Group

SQL
1WITH ranked AS (
2 SELECT
3 category,
4 product_name,
5 sales,
6 ROW_NUMBER() OVER (PARTITION BY category ORDER BY sales DESC) as rn
7 FROM products
8)
9SELECT * FROM ranked WHERE rn <= 3;

Mengambil 3 produk terlaris per kategori.

Pagination

SQL
1SELECT * FROM (
2 SELECT
3 ROW_NUMBER() OVER (ORDER BY created_at DESC) as rn,
4 *
5 FROM posts
6) sub
7WHERE rn BETWEEN 11 AND 20;

Pagination halaman 2 (baris 11-20).