
PERCENTILE_DISC 集約関数
PERCENTILE_DISC 関数は、値の集合のパーセンタイルを返します。 入力セット内の個々の値は離散値として扱われます。 算出されるパーセンタイル値は常に、入力セット内に存在していた値です。
スキーマは SYSIBM です。
- 百分位表現
- 関数によって計算するパーセンタイルを指定します。 percentile-expr は、LOB 以外の組み込みの数値ストリング、文字ストリング、またはグラフィック・ストリングのデータ・タイプを返す必要があります。 値が数値データ・タイプではない場合、その値は関数の評価の前に DECFLOAT(34) にキャストされます。 値は0~1の範囲でなければなりません。
- WITHIN GROUP
- グループ内で識別された行からパーセンタイルを計算することを指定します。
- ソート式
パーセンタイルを計算する値の集合と、集合の順序を指定します。 sort-expression は、組み込みの数値データ・タイプを返す必要があります。 sort-expressionには、スカラーのfullselect、または非決定論的または外部アクションを持つ関数は含めてはなりません。
sort-key-expression は、列マスクが定義されている列を参照してはなりません。
- ASC
- sort-expression による値を昇順で使用してパーセンタイルを計算することを指定します。
- DESC
- sort-expression による値を降順で使用してパーセンタイルを計算することを指定します。
結果は、sort-expression で識別された値の集合に対して percentile-expr で指定されるパーセンタイルに相当する値です。
PERCENTILE_DISC の場合、入力集合の各値は離散値として扱われます。 算出されるパーセンタイル値は常に、入力セット内に存在していた値です。 結果のデータ・タイプは、sort-expression の結果のデータ・タイプと同じです。
NULL 値を取り除くことにより、sort-expression から導き出された 1 組の値にこの関数が適用されます。
結果は NULL 値の場合もあります。 percentile-expr が NULL である場合、または空のセットに関数が適用された場合、結果は NULL 値となります。
PERCENTILE_DISCの例
- この例では、給与の中央値を、EMP 表の部門 D11 の従業員の離散値として計算します。
結果は 24,680.00 です。 部門 D11 には 11 人の従業員がいます。 11 個の値のグループの中央の行は 6 行目です。 奇数個の行があるため、パーセンタイル 0.5 の PERCENTILE_DISC 関数は、6 行目の値である 24,680.00 を返します。SELECT PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY SALARY) FROM DSN8C10.EMP WHERE WORKDEPT = ‘D11’; - この例では、EMP 表の部門 E21 の従業員の歩合の中央値を離散値として計算します。
結果は 1907.00 です。 この例には 6 つの行、つまり偶数個の行があります。 PERCENTILE_DISC 関数の計算では、中央にある 2 つの行の最初の行の値 (つまり 3 行目の値 1907.00) が返されます。SELECT PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY COMM) FROM DSN8C10.EMP WHERE WORKDEPT = ‘E21’; - この例では、EMP 表から部門ごとの合計給与の 95th パーセンタイルを計算します。
SELECT PERCENTILE_DISC(0.95) WITHIN GROUP (ORDER BY SALARY+BONUS) FROM DSN8C10.EMP GROUP BY WORKDEPT;

