Window
Snowflake
RANK
Memberikan ranking untuk setiap baris. Baris dengan nilai sama mendapat rank yang sama, dengan gap setelahnya.
Tipe hasil:
INTEGERDiperbarui: 6 Jan 2026Syntax
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
1 SELECT 2 RANK() OVER (ORDER BY score DESC) as rank, 3 student_name, 4 score 5 FROM exam_results;
Memberikan ranking berdasarkan score. Jika ada nilai sama, rankingnya sama.
Hasil
| RANK | STUDENT_NAME | SCORE |
|---|---|---|
| 1 | Alice | 95 |
| 1 | Bob | 95 |
| 3 | Carol | 90 |
| 4 | David | 85 |
Perbandingan RANK vs DENSE_RANK vs ROW_NUMBER
SQL
1 SELECT 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 6 FROM exam_results;
Perhatikan perbedaan: RANK melompat, DENSE_RANK tidak, ROW_NUMBER selalu unik.
Hasil
| SCORE | RANK | DENSE_RANK | ROW_NUM |
|---|---|---|---|
| 95 | 1 | 1 | 1 |
| 95 | 1 | 1 | 2 |
| 90 | 3 | 2 | 3 |
| 85 | 4 | 3 | 4 |
Ranking per Department
SQL
1 SELECT 2 department, 3 employee_name, 4 salary, 5 RANK() OVER (PARTITION BY department ORDER BY salary DESC) as salary_rank 6 FROM employees;
Ranking gaji karyawan dalam masing-masing department.
Hasil
| DEPARTMENT | EMPLOYEE_NAME | SALARY | SALARY_RANK |
|---|---|---|---|
| Engineering | John | 150000 | 1 |
| Engineering | Jane | 130000 | 2 |
| Sales | Bob | 100000 | 1 |
| Sales | Alice | 100000 | 1 |
| ... 1 baris lainnya | |||