Window

DENSE_RANK

SnowflakeSnowflake

Memberikan ranking untuk setiap baris tanpa gap. Baris dengan nilai sama mendapat rank yang sama, rank berikutnya adalah +1.

Tipe hasil: INTEGERDiperbarui: 6 Jan 2026

Syntax

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
1SELECT
2 DENSE_RANK() OVER (ORDER BY score DESC) as dense_rank,
3 student_name,
4 score
5FROM exam_results;

Ranking tanpa gap - setelah tie langsung rank berikutnya.

Hasil
DENSE_RANKSTUDENT_NAMESCORE
1Alice95
1Bob95
2Carol90
3David85

Top N Salaries (Handling Ties)

SQL
1WITH 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)
9SELECT * 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_NAMEDEPARTMENTSALARYSALARY_RANK
CEOExecutive5000001
CTOEngineering4000002
CFOFinance4000002
VP SalesSales3500003

Percentile-like Groups

SQL
1SELECT
2 product_name,
3 revenue,
4 DENSE_RANK() OVER (ORDER BY revenue DESC) as revenue_rank,
5 COUNT(*) OVER () as total_products
6FROM products;

Membuat ranking revenue untuk analisis distribusi produk.