OracleのRANK ランクを計算する【SQL】



ランクを計算するRANK

Oracleでランク順をもとめるには「RANK」を使います。

RANK() OVER (ORDER BY 列)

  • 指定した列の順にランキングを返します。

RANK() OVER (PARTITION BY 列1 ORDER BY 列2)

  • 列1をグループ化して、グループ化した中で列2の順にランキングを返します。

studentテーブル

stu_no activity score
1 サッカー 70
2 サッカー 88
3 野球 95
4 野球 62

例1. ランク順を取得するパターン

stu_no activity score score rank
4 野球 62 1
1 サッカー 70 2
2 サッカー 88 3
3 野球 95 4

ここでは「RANK() OVER (ORDER BY score)」として「score」をランク順に並び替えました。

例2. グループ化してランク順を取得するパターン

stu_no activity score score rank
1 サッカー 70 1
2 サッカー 88 2
4 野球 62 1
3 野球 95 2

ここでは「PARTITION BY activity」として「activity」をグループ化し、グループ化した中で「score」をランク順に並び替えました。

参照:Database SQL言語リファレンス RANK

以上、OracleでランクをもとめるRANKでした。