PERCENTILE_DISC
構文
関連項目:
OVER句の構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。
目的
PERCENTILE_DISCは、不連続分散モデルを想定する逆分散関数です。このファンクションでは、パーセンタイル値およびソート指定を指定し、そのセットから要素を戻します。計算では、NULLは無視されます。
このファンクションは、引数として、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。また、引数の数値データ型と同じデータ型を返します。
関連項目:
暗黙的な変換の詳細は、表2-8を参照してください。
最初の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以上の最小値です。
