PERCENT_RANK

集計の構文

percent_rank_aggregate::=

分析構文

percent_rank_analytic::=

関連項目:

構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。

目的

PERCENT_RANKは、CUME_DIST(累積分布)ファンクションと似ています。PERCENT_RANKが戻す値の範囲は、0から1(0および1を含む)です。すべての集合の最初の行のPERCENT_RANKは0(ゼロ)になります。戻り値はNUMBERです。

関連項目:

暗黙的な変換の詳細は、表2-8を参照してください。

  • 集計ファンクションとしてのPERCENT_RANKは、ファンクションの引数および対応するソート指定によって識別される不確定な行rを計算し、行rのランクから1を引いて、集計グループ内の行の数で割ります。不確定な行rをOracle Databaseが集計する行のグループに挿入するように計算します。

    このファンクションの引数は、各集計グループ内の1つの不確定行を識別します。このため、すべての引数は、集計グループ内で定数式と評価される必要があります。定数引数式および集計のORDER BY句の式の位置は、一致します。このため、引数の数は同じであり、その型は互換性がある必要があります。

  • 分析ファンクションとしてのPERCENT_RANKは、行rに対して、rのランクから1を引いた数を、評価される行数(問合せ結果セット全体またはパーティション)より1少ない数で割ります。

関連項目:

ORDER BY句の文字値を比較するためにPERCENT_RANKで使用する照合を定義する照合決定ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。

集計の例

次の例では、サンプル表hr.employeesから、給与が$15,500であり、歩合が5%である不確定な従業員のパーセント・ランクを計算します。

SELECT PERCENT_RANK(15000, .05) WITHIN GROUP
       (ORDER BY salary, commission_pct) "Percent-Rank" 
  FROM employees;

Percent-Rank
------------
  .971962617

分析の例

次の例では、従業員ごとに、部門内での給与のパーセント・ランクを計算します。

SELECT department_id, last_name, salary, PERCENT_RANK() 
       OVER (PARTITION BY department_id ORDER BY salary DESC) AS pr
  FROM employees
  ORDER BY pr, salary, last_name;

DEPARTMENT_ID LAST_NAME                     SALARY         PR
------------- ------------------------- ---------- ----------
           10 Whalen                          4400          0
           40 Mavris                          6500          0
              Grant                           7000          0
. . .
           80 Vishney                        10500 .181818182
           80 Zlotkey                        10500 .181818182
           30 Khoo                            3100         .2
. . .
           50 Markle                          2200 .954545455
           50 Philtanker                      2200 .954545455
           50 Olson                           2100          1
. . .