「Oracle」RANK() OVER (PARTITION BYでグループ化してランク順を取得するサンプル
環境
Windows 10 Home 64bit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0
構文
RANK() OVER (PARTITION BY 列A ORDER BY 列B)
列Aのグループ毎に列Bのランクを取得します。
グループ毎にするには「PARTITION BY ~」を使って、ランクはグループ化することもできます。 列Aのグループ毎に列Bの順にランキングを返します。
使用例
SELECT uno,department,grade, RANK() OVER (PARTITION BY department ORDER BY grade) grade_rank FROM usertbl ORDER BY department,grade_rank;
説明
ここでは「PARTITION BY department」として「department」をグループ化し、
グループ化した中で「grade」をランク順に並び替えました。