PERCENTILE_DISC
構文
関連項目:
OVER
句の構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。
目的
PERCENTILE_DISC
は、不連続分散モデルを想定する逆分散関数です。このファンクションでは、パーセンタイル値およびソート指定を指定し、そのセットから要素を戻します。計算では、NULLは無視されます。
このファンクションは、引数として、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。また、引数の数値データ型と同じデータ型を返します。
関連項目:
暗黙的な変換の詳細は、表2-9を参照してください
最初のexpr
は、パーセンタイル値であるため、0から1の数値で評価します。この式は、各集計グループ内の定数である必要があります。ORDER
BY
句には、ソート可能な型の単一式を指定します。
指定されたパーセンタイル値P
に対して、PERCENTILE_DISC
は、ORDER
BY
句の式の値をソートし、P
以上である(同じソート指定に従う)最小CUME_DIST
値を持つ値を戻します。
ノート:
PERCENTILE_DISC
ファンクションで大量のデータを処理する前に、次のいずれかの方法を使用して、正確な結果よりも迅速におおよその結果を取得することを検討してください。
-
PERCENTILE_DISC
ファンクションを使用する前に、APPROX_FOR_PERCENTILE
初期化パラメータをPERCENTILE_DISC
またはALL
に設定します。このパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 -
PERCENTILE_DISC
ファンクションではなく、APPROX_PERCENTILE
ファンクションを使用します。「APPROX_PERCENTILE」を参照してください。
集計の例
「PERCENTILE_CONT」の集計の例を参照してください。
分析の例
次の例では、サンプル表hr.employees
の各従業員の給与の中央値不連続パーセンタイルを計算します。
SELECT last_name, salary, department_id, PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY salary DESC) OVER (PARTITION BY department_id) "Percentile_Disc", CUME_DIST() OVER (PARTITION BY department_id ORDER BY salary DESC) "Cume_Dist" FROM employees WHERE department_id in (30, 60) ORDER BY last_name, salary, department_id; LAST_NAME SALARY DEPARTMENT_ID Percentile_Disc Cume_Dist ------------------------- ---------- ------------- --------------- ---------- Austin 4800 60 4800 .8 Baida 2900 30 2900 .5 Colmenares 2500 30 2900 1 Ernst 6000 60 4800 .4 Himuro 2600 30 2900 .833333333 Hunold 9000 60 4800 .2 Khoo 3100 30 2900 .333333333 Lorentz 4200 60 4800 1 Pataballa 4800 60 4800 .8 Raphaely 11000 30 2900 .166666667 Tobias 2800 30 2900 .666666667
部門30の中央値の値は2900です。この値の対応するパーセンタイル(Cume_Dist
)は、0.5以上の最小値です。部門60の中央値の値は4800です。この値の対応するパーセンタイルは、0.5以上の最小値です。