PERCENTILE_CONT

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_clauseorderby_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函数属于聚合函数或窗口函数。

  • 更多将多条输入记录进行求平均值、参数聚合的相关函数请参见聚合函数

  • 更多对指定开窗列的数据进行求和、数值排序的相关函数请参见窗口函数