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函数属于聚合函数或窗口函数。
该文章对您有帮助吗?