ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
グループ単位に、パーセントランクを取得する( PERCENT_RANK )
スポンサード リンク

グループ単位に、パーセントランクを取得するには、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



スポンサード リンク


グループ単位に、レコード件数を取得する( COUNT )
グループ単位に、最大値を取得する( MAX )
グループ単位に、平均値を取得する( AVG )
グループ単位に、最小値を取得する( MIN )
グループ単位に、集計する( SUM )
グループ単位に、ランキングを取得する( RANK、DENSE_RANK )
グループ単位に、パーセントランクを取得する( PERCENT_RANK )
グループ単位に、ソートしたレコードの先頭行に集計関数を使用する( KEEP、FIRST )
グループ単位に、ソートしたレコードの最終行に集計関数を使用する( KEEP、LAST )
グループ単位に、ソートしたレコードの先頭行の値を取得する( FIRST_VALUE )
グループ単位に、ソートしたレコードの最終行の値を取得する( LAST_VALUE )
グループ単位に、検索したレコードのn行前のデータを取得する( LAG )
グループ単位に、検索したレコードのn行後のデータを取得する( LEAD )
グループ単位に、検索レコードに順番を付ける( ROW_NUMBER )
グループ単位に、先頭から指定件数のレコードを取得する( ROW_NUMBER )
グループ単位に、n件目のレコードからm件目のレコードを取得する( ROW_NUMBER )
グループ単位に、標準偏差を取得する( STDDEV )
グループ単位に、累積標準偏差を取得する( STDDEV_SAMP )
グループ単位に、母集団標準偏差を取得する( STDDEV_POP )
グループ単位に、分散を取得する( VARIANCE )
グループ単位に、累積分散を取得する( VAR_SAMP )
グループ単位に、母集団分散を取得する( VAR_POP )
グループ単位に、相関係数を取得する( CORR )

SQL(DML) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ