「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」をランク順に並び替えました。

Oracle 19c

Posted by arkgame