集計の構文
cume_dist_aggregate::=
分析の構文
cume_dist_analytic::=
用途
CUME_DIST
は、値のグループにある値の累積分布値を計算します。CUME_DIST
が戻す値の範囲は、0より大きく1以下です。連結値は、常に同じ累積分布値に対して評価を行います。
このファンクションは、引数として、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。Oracle Databaseは、数値の優先順位が最も高い引数を判断し、残りの引数をそのデータ型に暗黙的に変換して、計算を実行してNUMBER
を戻します。
集計ファンクションとしてのCUME_DIST
は、ファンクションの引数および対応するソート指定によって識別される不確定な行r
に対して、集計グループ内の行の中での行r
の相対位置を計算します。Oracleは、不確定な行r
を集計される行のグループに挿入するように計算します。このファンクションの引数は、各集計グループ内の1つの不確定行を識別します。このため、すべての引数は、集計グループ内で定数式と評価される必要があります。定数引数式および集計のORDER
BY
句の式の位置は、一致します。このため、引数の数は同じであり、その型は互換性がある必要があります。
分析ファンクションとしてのCUME_DIST
は、値のグループにある特定の値の相対位置を計算します。行r
について、昇順で順序付けられているとします。r
のCUME_DIST
は、r
の値以下の値の行数を、評価される行の数(問合せ結果セットまたはパーティション)で割った数です。
集計の例
次の例では、サンプル表oe.employees
の従業員の中から、給与が$15,500であり、歩合が5%の不確定な従業員の累積分布を計算します。
SELECT CUME_DIST(15500, .05) WITHIN GROUP (ORDER BY salary, commission_pct) "Cume-Dist of 15500" FROM employees; Cume-Dist of 15500 ------------------ .972222222
分析の例
次の例では、購買部門の各従業員の給与のパーセンタイルを計算します。たとえば、事務員の40%が、Himuroの給与以下の給与を得ていることがわかります。
SELECT job_id, last_name, salary, CUME_DIST() OVER (PARTITION BY job_id ORDER BY salary) AS cume_dist FROM employees WHERE job_id LIKE 'PU%' ORDER BY job_id, last_name, salary, cume_dist; JOB_ID LAST_NAME SALARY CUME_DIST ---------- ------------------------- ---------- ---------- PU_CLERK Baida 2900 .8 PU_CLERK Colmenares 2500 .2 PU_CLERK Himuro 2600 .4 PU_CLERK Khoo 3100 1 PU_CLERK Tobias 2800 .6 PU_MAN Raphaely 11000 1