PERCENTILE_CONT

PERCENTILE_CONT 関数は、値の集合のパーセンタイルを返します。 値の集合は、連続分布として扱われます。 計算されるパーセンタイル値は補間値であり、入力セット内に存在しない可能性もあります。

構文図を読む構文図をスキップする百分位数コンバート( 百分位数式)WITHIN GROUP(ORDER BYソート式ASCDESC)

スキーマは 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;