Window

RANK

SnowflakeSnowflake

Memberikan ranking untuk setiap baris. Baris dengan nilai sama mendapat rank yang sama, dengan gap setelahnya.

Tipe hasil: INTEGERDiperbarui: 6 Jan 2026

Syntax

SQL
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

Ranking Berdasarkan Score

SQL
1SELECT
2 RANK() OVER (ORDER BY score DESC) as rank,
3 student_name,
4 score
5FROM exam_results;

Memberikan ranking berdasarkan score. Jika ada nilai sama, rankingnya sama.

Hasil
RANKSTUDENT_NAMESCORE
1Alice95
1Bob95
3Carol90
4David85

Perbandingan RANK vs DENSE_RANK vs ROW_NUMBER

SQL
1SELECT
2 score,
3 RANK() OVER (ORDER BY score DESC) as rank,
4 DENSE_RANK() OVER (ORDER BY score DESC) as dense_rank,
5 ROW_NUMBER() OVER (ORDER BY score DESC) as row_num
6FROM exam_results;

Perhatikan perbedaan: RANK melompat, DENSE_RANK tidak, ROW_NUMBER selalu unik.

Hasil
SCORERANKDENSE_RANKROW_NUM
95111
95112
90323
85434

Ranking per Department

SQL
1SELECT
2 department,
3 employee_name,
4 salary,
5 RANK() OVER (PARTITION BY department ORDER BY salary DESC) as salary_rank
6FROM employees;

Ranking gaji karyawan dalam masing-masing department.

Hasil
DEPARTMENTEMPLOYEE_NAMESALARYSALARY_RANK
EngineeringJohn1500001
EngineeringJane1300002
SalesBob1000001
SalesAlice1000001
... 1 baris lainnya