Window

ROW_NUMBER

PostgreSQLPostgreSQL

Memberikan nomor urut unik untuk setiap baris dalam partition, dimulai dari 1. Nomor tidak pernah duplikat dalam satu partition.

Tipe hasil: bigintDiperbarui: 16 Mei 2026

Syntax

SQL
ROW_NUMBER() OVER ([PARTITION BY partition_expression] ORDER BY sort_expression)

Parameter

ORDER BYclausewajib

Menentukan urutan penomoran dalam partition

PARTITION BYclauseopsional

Opsional. Membagi hasil ke dalam partition terpisah

Contoh Penggunaan

Penomoran Sederhana

SQL
1SELECT
2 ROW_NUMBER() OVER (ORDER BY created_at DESC) as row_num,
3 name,
4 created_at
5FROM products;

Memberikan nomor urut berdasarkan tanggal terbaru.

Hasil
row_numnamecreated_at
1iPhone 152024-03-15
2MacBook Pro2024-03-10
3AirPods2024-03-05

Top 3 per Kategori

SQL
1WITH ranked_products AS (
2 SELECT
3 category,
4 name,
5 price,
6 ROW_NUMBER() OVER (
7 PARTITION BY category
8 ORDER BY price DESC
9 ) as rank
10 FROM products
11)
12SELECT * FROM ranked_products WHERE rank <= 3;

Mengambil 3 produk termahal per kategori menggunakan ROW_NUMBER dengan PARTITION BY.

Hasil
categorynamepricerank
ElectronicsMacBook Pro25000001
ElectronicsiPhone 1515000002
ElectronicsAirPods3500003
ClothingJacket5000001
... 2 baris lainnya

Pagination dengan ROW_NUMBER

SQL
1SELECT *
2FROM (
3 SELECT
4 ROW_NUMBER() OVER (ORDER BY id) as row_num,
5 *
6 FROM products
7) numbered
8WHERE row_num BETWEEN 21 AND 40; -- Page 2, 20 items per page

Implementasi pagination menggunakan ROW_NUMBER.

Pertanyaan Umum tentang ROW_NUMBER

Apa itu fungsi ROW_NUMBER di PostgreSQL?
Memberikan nomor urut unik untuk setiap baris dalam partition, dimulai dari 1. Nomor tidak pernah duplikat dalam satu partition. Di PostgreSQL, fungsi ROW_NUMBER termasuk dalam kelompok fungsi yang sering digunakan untuk mengolah dan menganalisis data secara efisien.
Bagaimana cara menggunakan ROW_NUMBER di PostgreSQL?
Gunakan sintaks berikut: ROW_NUMBER() OVER ([PARTITION BY partition_expression] ORDER BY sort_expression). Pastikan argumen yang dimasukkan sudah sesuai dengan tipe data yang diharapkan.
Apa nilai yang dikembalikan oleh fungsi ROW_NUMBER?
Fungsi ROW_NUMBER mengembalikan nilai bertipe bigint. 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 ROW_NUMBER?
Fungsi ini memiliki 1 parameter wajib dan 1 parameter opsional. Parameter yang digunakan: PARTITION BY (clause, opsional): Opsional. Membagi hasil ke dalam partition terpisah; ORDER BY (clause, wajib): Menentukan urutan penomoran dalam partition.