PERCENTILE_COUNT函数用于计算精确的百分位数,采用线性插值算法,对指定列升序排列,返回精确的第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:必填。需要计算的百分位数。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函数属于聚合函数或窗口函数。
该文章对您有帮助吗?