Window
Snowflake
DENSE_RANK
Memberikan ranking untuk setiap baris tanpa gap. Baris dengan nilai sama mendapat rank yang sama, rank berikutnya adalah +1.
Tipe hasil:
INTEGERDiperbarui: 6 Jan 2026Syntax
SQL
DENSE_RANK() OVER ([PARTITION BY partition_expr] ORDER BY order_expr)Parameter
ORDER BYclausewajib
Menentukan urutan ranking dalam partition
PARTITION BYclauseopsional
Opsional. Membagi hasil ke dalam partition terpisah
Contoh Penggunaan
Dense Ranking
SQL
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.
Hasil
| DENSE_RANK | STUDENT_NAME | SCORE |
|---|---|---|
| 1 | Alice | 95 |
| 1 | Bob | 95 |
| 2 | Carol | 90 |
| 3 | David | 85 |
Top N Salaries (Handling Ties)
SQL
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.
Hasil
| EMPLOYEE_NAME | DEPARTMENT | SALARY | SALARY_RANK |
|---|---|---|---|
| CEO | Executive | 500000 | 1 |
| CTO | Engineering | 400000 | 2 |
| CFO | Finance | 400000 | 2 |
| VP Sales | Sales | 350000 | 3 |
Percentile-like Groups
SQL
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.