|
スポンサード リンク
グループ単位に、パーセントランクを取得するには、PERCENT_RANK関数を使用する
分析関数のPERCENT_RANKは、ウィンドウ(window)を操作してランキングを取得します。
PERCENT_RANK() |
検索レコードの表示順にパーセントランク付けした値を表示します。 |
OVER(
[ PRTITION BY 項目1,
[項目2,・・] ]
ORDER BY 項目1,
[項目2,・・] )
|
PERCENT_RANK関数と一緒に使用します
PRTITION BY句には、グループ化対象項目を指定する
ORDERY BY句には、ランキング対象の項目を指定する |
サンプル表「emp」データ
|
SQL> select * from emp;
EMP DEP JOB FIRST_NAME LAST_NAME SALARY
--- --- --- ---------- ---------- ----------
E01 D01 J01 名字1 名前1 100
E02 D01 J01 名前2 名前2 250
E03 D02 J02 名前3 名前3 200
E04 D02 J03 名前4 名前4 200
E05 D02 J03 名前5 名前5 130
E06 D03 J03 名前6 名前6 150 |
例1) 列「salary」の小さい順にランキング表示する
|
SQL> select
2 emp_id, salary,
3 percent_rank() over( order by salary ) as パーセントランク
4 from emp;
EMP_ID SALARY パーセントランク
----- ------ ----------------
E01 150 0
E02 300 0.2
E03 300 0.2
E04 400 0.6
E05 500 0.8
E06 1 |
例2) 列「salary」の小さい順にランキング表示する
「salary」の値が
NULLのレコードは、レコードの先頭にします。
|
SQL> select
2 emp_id, salary,
3 percent_rank() over( order by salary nulls first ) as パーセントランク
4 from emp;
EMP_ID SALARY パーセントランク
----- ------- ------------------
E06 0
E01 150 0.2
E02 300 0.4
E03 300 0.4
E04 400 0.8
E05 500 1 |
例3) 列「dept_id」別に「salary」の小さい順にランキング表示する
|
SQL> select
2 emp_id, dept_id, salary,
3 percent_rank() over( partition by dept_id order by salary ) as パーセントランク
4 from emp;
EMP_ID DEPT_ID SALARY パーセントランク
----- ----- ------- ----------------
E01 D01 150 0
E02 D02 300 0
E04 D02 400 1
E03 D03 300 0
E05 D03 500 0.5
E06 D03 1 |
スポンサード リンク
|