MEDIAN 集約関数
MEDIAN 関数は一連の数値の中央値を返します。
スキーマは SYSIBM です。
- 数値式
組み込み数値データ・タイプを返す式。 数値式にはスカラーのフルセレクトを含めてはならない。または、非決定論的または外部アクションを持つ関数を呼び出してはならない
数値式は、カラムマスクが定義されているカラムを参照してはなりません。
引数が DECFLOAT(n) の場合、この関数の結果は DECFLOAT(34) になります。 それ以外の場合は、関数の結果は倍精度浮動小数点数です。
この関数は、引数値から NULL 値を取り除いて得られた値の集合に対して適用されます。
結果は NULL 値の場合もあります。 numeric-expression が NULL である場合、または空のセットに関数が適用された場合、結果は NULL 値となります。
MEDIAN(numeric-expression) の指定は、PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY numeric-expression) の指定と同等です。
MEDIANの例
次のステートメントは、EMPLOYEE テーブルの D11 部門の従業員の中央値を算出します。
SELECT MEDIAN(SALARY) FROM EMPLOYEE WHERE WORKDEPT = ‘D11’;結果は 24680.00 です。 部門 D11 には 11 人の従業員がいます。 11 個の値のグループにおいて、中央の行は 6 行目です。 このグループ全体の MEDIAN の結果は、6 行目の値である 24680.00 となります。
次のステートメントは、EMPLOYEE テーブルの E21 部門の従業員の中央値を算出します。
SELECT MEDIAN(SALARY) FROM EMPLOYEE WHERE WORKDEPT = ‘E21’;結果は 24605.00 です。 部門 E21 には 6 人の従業員がいます。 偶数個の行があるため、中央にある 2 つの行の間に値を挿入することで MEDIAN を計算します。 中央の 2 つの行は、値が 23840.00 である 3 行目と、値が 25370.00 である 4 行目です。 MEDIAN は、これらの 2 つの値を平均して算出した 24605.00 となります。
次のステートメントは、EMPLOYEE テーブルの E21 部門の従業員の中央値を算出します。
SELECT MEDIAN(SALARY) FROM EMPLOYEE WHERE WORKDEPT = ‘E21’;結果は 24605.00 です。 部門 E21 には 6 人の従業員がいます。 偶数個の行があるため、中央にある 2 つの行の間に値を挿入することで MEDIAN を計算します。 中央の 2 つの行は、値が 23840.00 である 3 行目と、値が 25370.00 である 4 行目です。 MEDIAN は、これらの 2 つの値を平均して算出した 24605.00 となります。
MEDIANに関する注記
MEDIAN 関数を参照する SQL ステートメントに対して EXPLAIN が発行されたものの、何らかの理由でアクセラレーター・サーバーにおいてそのステートメントを実行できない場合は、以下の値が PLAN_TABLE 表に設定されます。
- SELECT ステートメントの場合、列 QBLOCK_TYPE に値 'PRUNED' が設定され、列 ACCESSTYPE に値 ' ' (ブランク) が設定されます。
- 副選択を伴う INSERT ステートメントの場合、その副選択の PLAN_TABLE 行では、列 QBLOCK_TYPE に値 'NCOSUB' が設定され、列 ACCESSTYPE に値 ' ' (ブランク) が設定されます。
また、MEDIAN 関数を使用した SQL ステートメントでビューが参照される際、そのビューで参照される表は、アクセラレーションが使用可能に設定されていなければなりません。 ビューで参照されるそれらの表は、ビューの作成時にアクセラレーションが使用可能に設定される必要はありません。
