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:必填。需要計算的百分位元。DOUBLE類型常量,取值在[0,1]範圍內。
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值則排序時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函數屬於彙總函式或視窗函數。