PERCENTILE_CONT 関数は、線形補間を使用して正確なパーセンタイルを計算します。この関数は、列の値を昇順にソートし、指定された percentile に対する補間値を返します。
構文
-- 集計関数として使用する場合
PERCENTILE_CONT(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>])
-- ウィンドウ関数として使用する場合
PERCENTILE_CONT(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>]) OVER ([partition_clause] [orderby_clause])パラメーター
col_name:必須。DOUBLE 型または DECIMAL 型の列です。
percentile:必須。[0, 1] の範囲内の DOUBLE 定数です。
isIgnoreNull:省略可能。NULL 値を無視するかどうかを指定する BOOLEAN 定数です。デフォルトは TRUE です。FALSE を指定すると、NULL 値は最小値として扱われます。
partition_clause および orderby_clause:詳細については、「ウィンドウ関数」をご参照ください。
戻り値
計算されたパーセンタイルを DOUBLE 値として返します。
使用例
例 1:NULL 値を無視してウィンドウ内で正確なパーセンタイルを計算します。
SELECT PERCENTILE_CONT(x, 0) OVER() AS min, PERCENTILE_CONT(x, 0.01) OVER() AS percentile1, PERCENTILE_CONT(x, 0.5) OVER() AS median, PERCENTILE_CONT(x, 0.9) OVER() AS percentile90, PERCENTILE_CONT(x, 1) OVER() AS max FROM VALUES(0D),(3D),(NULL),(1D),(2D) AS tbl(x) LIMIT 1; -- 次の結果が返されます: +------------+-------------+------------+--------------+------------+ | min | percentile1 | median | percentile90 | max | +------------+-------------+------------+--------------+------------+ | 0.0 | 0.03 | 1.5 | 2.7 | 3.0 | +------------+-------------+------------+--------------+------------+例 2:NULL 値を最小値として扱い、ウィンドウ内で正確なパーセンタイルを計算します。
SELECT PERCENTILE_CONT(x, 0, false) OVER() AS min, PERCENTILE_CONT(x, 0.01, false) OVER() AS percentile1, PERCENTILE_CONT(x, 0.5, false) OVER() AS median, PERCENTILE_CONT(x, 0.9, false) OVER() AS percentile90, PERCENTILE_CONT(x, 1, false) OVER() AS max FROM VALUES(0D),(3D),(NULL),(1D),(2D) AS tbl(x) LIMIT 1; -- 次の結果が返されます: +------------+-------------+------------+--------------+------------+ | min | percentile1 | median | percentile90 | max | +------------+-------------+------------+--------------+------------+ | NULL | 0.0 | 1.0 | 2.6 | 3.0 | +------------+-------------+------------+--------------+------------+
関連関数
PERCENTILE_CONT は、集計関数またはウィンドウ関数として使用できます。