PERCENTILE_CONT 関数は、線形補間アルゴリズムを使用して正確なパーセンタイル値を計算します。この関数は、指定された列の値を昇順にソートし、指定された パーセンタイルの値を返します。
コマンドフォーマット
-- 正確なパーセンタイルを計算します。
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:必須。計算するパーセンタイル。このパラメーターは `DOUBLE` 定数で、値は `[0, 1]` の範囲内である必要があります。
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` 値を無視しません。この場合、ソート中に `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 は集計関数であり、ウィンドウ関数でもあります。