Memberikan ranking untuk setiap baris tanpa gap. Baris dengan nilai sama mendapat rank yang sama, rank berikutnya adalah +1.
INTEGERDiperbarui: 12 Jul 2026DENSE_RANK() OVER ([PARTITION BY partition_expr] ORDER BY order_expr)Menentukan urutan ranking dalam partition
Opsional. Membagi hasil ke dalam partition terpisah
1 SELECT 2 DENSE_RANK() OVER (ORDER BY score DESC) as dense_rank, 3 student_name, 4 score 5 FROM exam_results;
Ranking tanpa gap - setelah tie langsung rank berikutnya.
| DENSE_RANK | STUDENT_NAME | SCORE |
|---|---|---|
| 1 | Alice | 95 |
| 1 | Bob | 95 |
| 2 | Carol | 90 |
| 3 | David | 85 |
1 WITH ranked_salaries AS ( 2 SELECT 3 employee_name, 4 department, 5 salary, 6 DENSE_RANK() OVER (ORDER BY salary DESC) as salary_rank 7 FROM employees 8 ) 9 SELECT * FROM ranked_salaries WHERE salary_rank <= 3;
Mengambil top 3 gaji tertinggi. Dengan DENSE_RANK, jika ada tie di rank 3, semua akan termasuk.
| EMPLOYEE_NAME | DEPARTMENT | SALARY | SALARY_RANK |
|---|---|---|---|
| CEO | Executive | 500000 | 1 |
| CTO | Engineering | 400000 | 2 |
| CFO | Finance | 400000 | 2 |
| VP Sales | Sales | 350000 | 3 |
1 SELECT 2 product_name, 3 revenue, 4 DENSE_RANK() OVER (ORDER BY revenue DESC) as revenue_rank, 5 COUNT(*) OVER () as total_products 6 FROM products;
Membuat ranking revenue untuk analisis distribusi produk.
Sudah paham DENSE_RANK? Latih langsung di browser
Latihan interaktif, langsung di browser.