PERCENTILE_DISC

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

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

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