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 . . .