Window

DENSE_RANK

PostgreSQLPostgreSQL

Memberikan ranking tanpa gap. Berbeda dengan RANK yang membuat gap setelah nilai sama, DENSE_RANK melanjutkan dengan angka berikutnya. Berguna untuk top-N queries.

Tipe hasil: bigintDiperbarui: 16 Mei 2026

Syntax

SQL
DENSE_RANK() OVER (
  [PARTITION BY partition_expression]
  ORDER BY sort_expression [ASC|DESC]
)

Parameter

ORDER BYexpressionwajib

Menentukan urutan ranking

PARTITION BYexpressionopsional

Membagi data menjadi grup untuk ranking terpisah

Contoh Penggunaan

Perbedaan RANK vs DENSE_RANK

SQL
1SELECT
2 name,
3 score,
4 RANK() OVER (ORDER BY score DESC) AS rank,
5 DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank
6FROM students;

RANK memberi gap, DENSE_RANK tidak.

Hasil
namescorerankdense_rank
Andi10011
Budi10011
Citra9032
Dewi8543

Top 3 per Kategori

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

Mengambil 3 produk terlaris per kategori.

Hasil
categoryproduct_namesalesrank
ElectronicsLaptop10001
ElectronicsPhone8002
ElectronicsTablet6003

Ranking Nilai Unik

SQL
1SELECT DISTINCT
2 salary,
3 DENSE_RANK() OVER (ORDER BY salary DESC) AS salary_tier
4FROM employees;

Membuat tier gaji tanpa gap.

Pertanyaan Umum tentang DENSE_RANK

Apa itu fungsi DENSE_RANK di PostgreSQL?
Memberikan ranking tanpa gap. Berbeda dengan RANK yang membuat gap setelah nilai sama, DENSE_RANK melanjutkan dengan angka berikutnya. Berguna untuk top-N queries. Di PostgreSQL, fungsi DENSE_RANK termasuk dalam kelompok fungsi yang sering digunakan untuk mengolah dan menganalisis data secara efisien.
Bagaimana cara menggunakan DENSE_RANK di PostgreSQL?
Gunakan sintaks berikut: DENSE_RANK() OVER ( [PARTITION BY partition_expression] ORDER BY sort_expression [ASC|DESC] ). Pastikan argumen yang dimasukkan sudah sesuai dengan tipe data yang diharapkan.
Apa nilai yang dikembalikan oleh fungsi DENSE_RANK?
Fungsi DENSE_RANK 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 DENSE_RANK?
Fungsi ini memiliki 1 parameter wajib dan 1 parameter opsional. Parameter yang digunakan: PARTITION BY (expression, opsional): Membagi data menjadi grup untuk ranking terpisah; ORDER BY (expression, wajib): Menentukan urutan ranking.