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

ORACLE SQL リファレンス

Web oracle.se-free.com
パーセントランク(仮説ランク)を取得する( PERCENT_RANK )
スポンサード リンク

パーセントランク(仮想ランク)を取得するするには、PERCENT_RANK関数を使用する

PERCENT_RANK( 数値 ) 引数で指定した数値の、検索対象レコード内のパーセントランク付けした値を表示します。

パーセントランクは、0〜1の範囲の数値を返します。
WITH_IN GROUP( ORDER BY
    項目1,[項目2・・・] )
PERCENT_RANK関数と一緒に使用します
ORDERY BY句には、ランキング対象の項目を指定します。
降順にランキングする場合は、DESCを付けます。
NULL値を最初にする場合には、NULLS FIRSTを付けます。
NULL値を最後にする場合には、NULLS LASTを付けます。


サンプル表「emp」データ

SQL> select * from emp;

EMP_ID DEPT_ID EMP_NAME  SALARY
------ ------ ---------- ----------
E01    D01   なまえ1    150
E02    D02   なまえ2    300
E03    D03   なまえ3    300
E04    D02   なまえ4    400
E05    D03   なまえ5    500
E06    D03   なまえ6



例1) 「330」のパーセントランクを列「salary」の昇順に取得します。

SQL> select
  2  percent_rank( 330 ) within group( order by salary ) as ランク
  3 from emp;

パーセントランク
----------
0.5


例2) 「100」のパーセントランクを列「salary」の昇順に取得します。
     「salary」の値が NULLのレコードは、レコードの先頭にします。

SQL> select
  2  percent_rank( 100 ) within group( order by salary nulls first ) as ランク
  3 from emp;

パーセントランク
----------
0.166666667

 ※列「salary」の値がNULLレコードを先頭にしているので、値「100」は、emp表のの中では、2番目に小さくなるので、全レコードの中でのランクは0.16666667になります。

例3) 「330」のランクを列「salary」の昇順で、列「dept_id」別に取得します。

SQL> select
  2  percent_rank( 330 ) within group( order by salary ) as パーセントランク
  3 from emp
  4 group by dept_id;

パーセントランク
----------------
1
0.5
0.333333333




スポンサード リンク


レコード件数を取得する( COUNT )
最大値を取得する( MAX )
平均値を取得する( AVG )
最小値を取得する( MIN )
グループ単位に集計する( SUM、GROUP BY )
グループ単位に集計結果の値から指定条件でレコードを抽出する( HAVING )
ランキング(仮説ランク)を取得する( RANK、DENSE_RANK )
パーセントランク(仮説ランク)を取得する( PERCENT_RANK )
ソートしたレコードの先頭行に集計関数を使用する( KEEP、FIRST )
ソートしたレコードの最終行に集計関数を使用する( KEEP、LAST )
小計を計算する( ROLLUP )
クロス集計する( CUBE )
小計行とグループ化された集計行を区別する( GROUPING、GROUPING_ID )
標準偏差を取得する( STDDEV )
累積標準偏差を取得する( STDDEV_SAMP )
母集団標準偏差を取得する( STDDEV_POP )
分散を取得する( VARIANCE )
累積分散を取得する( VAR_SAMP )
母集団分散を取得する( VAR_POP )
中央値を取得する( MEDIAN )
相関係数を取得する( CORR )

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