「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のランクを取得します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
グループ毎にするには「PARTITION BY ~」を使って、ランクはグループ化することもできます。
列Aのグループ毎に列Bの順にランキングを返します。
グループ毎にするには「PARTITION BY ~」を使って、ランクはグループ化することもできます。 列Aのグループ毎に列Bの順にランキングを返します。
グループ毎にするには「PARTITION BY ~」を使って、ランクはグループ化することもできます。
列Aのグループ毎に列Bの順にランキングを返します。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT uno,department,grade,
RANK() OVER (PARTITION BY department ORDER BY grade) grade_rank
FROM usertbl
ORDER BY department,grade_rank;
SELECT uno,department,grade, RANK() OVER (PARTITION BY department ORDER BY grade) grade_rank FROM usertbl ORDER BY department,grade_rank;
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