Window

RANK

PostgreSQLPostgreSQL

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

Tipe hasil: bigint

Syntax

SQL
RANK() OVER ([PARTITION BY partition_expression] ORDER BY sort_expression)

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 name,
4 score
5FROM students;

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

Hasil
ranknamescore
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 students;

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

Hasil
scorerankdense_rankrow_num
95111
95112
90323
85434