PERCENTILE_CONT
PERCENTILE_CONT 関数は、値の集合のパーセンタイルを返します。 値の集合は、連続分布として扱われます。 計算されるパーセンタイル値は補間値であり、入力セット内に存在しない可能性もあります。
スキーマは SYSIBM です。
- percentile-expr
- 関数によって計算するパーセンタイルを指定します。 percentile-expr は、LOB 以外の組み込みの数値ストリング、文字ストリング、またはグラフィック・ストリングのデータ・タイプを返す必要があります。 値が数値データ・タイプではない場合、その値は関数の評価の前に DECFLOAT(34) にキャストされます。 値の範囲は 0 から 1 まででなければなりません。
- WITHIN GROUP
- グループ内で識別された行からパーセンタイルを計算することを指定します。
- sort-expression
- パーセンタイルを計算する値の集合と、集合の順序を指定します。 sort-expression は、組み込みの数値データ・タイプを返す必要があります。 ストリング値は、暗黙的に数値にキャストされます。 また、sort-expression には、スカラー全選択、非 deterministic 関数、または外部アクションを伴う関数を含めることはできません。
- ASC
- sort-expression による値を昇順で使用してパーセンタイルを計算することを指定します。
- DESC
- sort-expression による値を降順で使用してパーセンタイルを計算することを指定します。
結果は、sort-expression で識別された値の集合に対して percentile-expr で指定されるパーセンタイルに相当する値です。
PERCENTILE_CONT の場合、値の集合は連続分布として扱われます。 計算されるパーセンタイルは、入力集合にはなかった可能性がある補間値です。 引数が DECFLOAT(n) の場合、この関数の結果は DECFLOAT(34) になります。 それ以外の場合は、関数の結果は倍精度浮動小数点数です。
NULL 値を取り除くことにより、sort-expression から導き出された 1 組の値にこの関数が適用されます。
結果は NULL 値の場合もあります。 percentile-expr が NULL である場合、または空のセットに関数が適用された場合、結果は NULL 値となります。
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER
BY sort-expression)
を使用した結果は、 MEDIAN(numeric-expression)
と同等です。
例 1: この例では、EMP 表の部門 D11 に所属する従業員の給与の中央値を計算します。
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY SALARY)
FROM DSN8C10.EMP
WHERE WORKDEPT = ‘D11’;
結果は 24,680.00 です。 部門 D11 には 11 人の従業員がいます。 11 個の値のグループの中央の行は 6 行目です。 奇数個の行があるため、パーセンタイル 0.5 の PERCENTILE_CONT 関数は 6 行目の値である 24,680.00 を返します。
例 2: この例では、EMP 表の部門 E21 に所属する従業員の歩合の中央値を計算します。
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY COMM)
FROM DSN8C10.EMP
WHERE WORKDEPT = ‘E21’;
結果は 1968.50 です。 この例には偶数個の行があるため、中央にある 2 つの行の間の値を補完することで PERCENTILE_CONT 関数が計算されます。 中央にある 2 つの行は、値 1907.00 を持つ 3 行目と、値 2030.00 を持つ 4 行目です。 PERCENTILE_CONT はこれらの 2 つの値を平均して算出され、1968.50 となります。
例 3: この例では、EMP 表の各部門について、合計給与の 95 番目のパーセンタイルを計算します。
SELECT PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY SALARY+BONUS)
FROM DSN8C10.EMP
GROUP BY WORKDEPT;