PERCENTILE_DISC 関数は、特定のパーセンタイルを計算します。この関数は、指定された列の値を昇順にソートし、累積分布が指定されたパーセンタイル以上になる最初の値を返します。
コマンドフォーマット
-- 特定のパーセンタイル値を計算します。
PERCENTILE_DISC(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>])
-- ウィンドウ内のパーセンタイル値を計算します。
PERCENTILE_DISC(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>]) OVER ([partition_clause] [orderby_clause])パラメーター
col_name:必須。ソート可能な値を含む列です。
percentile:必須。計算対象のパーセンタイルです。値は [0, 1] の範囲にある DOUBLE 型の定数である必要があります。
isIgnoreNull:任意。NULL 値を無視するかどうかを指定します。このパラメーターは BOOLEAN 型の定数です。デフォルト値は TRUE です。このパラメーターが FALSE に設定されている場合、ソート中に NULL 値は最小値として扱われます。
partition_clause と orderby_clause:詳細については、「ウィンドウ関数」をご参照ください。
戻り値
計算されたパーセンタイル値を返します。戻り値のデータの型は、入力 col_name 列のデータの型と同じです。
例
例 1:ウィンドウ内のパーセンタイル値を計算し、NULL 値を無視します。
SELECT x, PERCENTILE_DISC(x, 0) OVER() AS min, PERCENTILE_DISC(x, 0.5) OVER() AS median, PERCENTILE_DISC(x, 1) OVER() AS max FROM VALUES('c'),(NULL),('b'),('a') AS tbl(x); -- 次の結果が返されます。 +------------+------------+------------+------------+ | x | min | median | max | +------------+------------+------------+------------+ | c | a | b | c | | NULL | a | b | c | | b | a | b | c | | a | a | b | c | +------------+------------+------------+------------+例 2:ウィンドウ内のパーセンタイル値を計算し、ソート時に NULL 値を最小値として扱います。
SELECT x, PERCENTILE_DISC(x, 0, false) OVER() AS min, PERCENTILE_DISC(x, 0.5, false) OVER() AS median, PERCENTILE_DISC(x, 1, false) OVER() AS max FROM VALUES('c'),(NULL),('b'),('a') AS tbl(x); -- 次の結果が返されます。 +------------+------------+------------+------------+ | x | min | median | max | +------------+------------+------------+------------+ | c | NULL | a | c | | NULL | NULL | a | c | | b | NULL | a | c | | a | NULL | a | c | +------------+------------+------------+------------+
関連関数
PERCENTILE_DISC は集計関数またはウィンドウ関数です。