
PERCENTILE_CONT 集約関数
PERCENTILE_CONT 関数は、値の集合のパーセンタイルを返します。 値の集合は、連続分布として扱われます。 計算されるパーセンタイル値は補間値であり、入力セット内に存在しない可能性もあります。
スキーマは SYSIBM です。
- 百分位表現
- 関数によって計算するパーセンタイルを指定します。 percentile-expr は、LOB 以外の組み込みの数値ストリング、文字ストリング、またはグラフィック・ストリングのデータ・タイプを返す必要があります。 値が数値データ・タイプではない場合、その値は関数の評価の前に DECFLOAT(34) にキャストされます。 値は0~1の範囲でなければなりません。
- WITHIN GROUP
- グループ内で識別された行からパーセンタイルを計算することを指定します。
- ソート式
パーセンタイルを計算する値の集合と、集合の順序を指定します。 sort-expression は、組み込みの数値データ・タイプを返す必要があります。 ストリング値は、暗黙的に数値にキャストされます。 sort-expressionには、スカラーのfullselect、または非決定論的または外部アクションを持つ関数は含めてはいけません。
ソート式は、カラムマスクが定義されているカラムを参照してはなりません。
- 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)と同等です。
PERCENTILE_CONT の例
この例では、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 を返します。
この例では、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 となります。
この例では、EMP 表から部門ごとの合計給与の 95th パーセンタイルを計算します。
SELECT PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY SALARY+BONUS) FROM DSN8C10.EMP GROUP BY WORKDEPT;

