跳到主要内容

PERCENTILE_CONT

描述

该函数用于计算指定列的精确百分位数。该函数会对输入列进行升序排序,并根据给定的百分位值(percentile)返回对应的插值结果。

使用限制

当前版本的 PERCENTILE_CONT 不支持 DATETIME 类型。

语法声明

PERCENTILE_CONT(expr, percentile)

参数解释

  • expr:需要计算百分位数的目标列,当前必须为数值类型。具体支持的类型参考 支持类型

    信息

    PERCENTILE_CONT 会自动忽略输入列中的 NULL 值。

  • percentile:指定的百分位值,表示目标值在数据分布中的位置。取值范围为 [0, 1] 的浮点数常量。

支持类型

  • 整数类型:TINYINTSMALLINTMEDIUMINTINT/INTEGERBIGINT
  • 定点类型:DECIMALNUMERIC
  • 浮点类型:FLOATDOUBLE
  • Bit-Value 类型:BIT

返回类型

返回类型与 expr 一致。

返回一个处于指定百分位数的值。如果没有输入值恰好位于所需的百分位数,则使用两个最接近的输入值的线性插值来计算结果。

示例

  1. 创建一个包含列 col1col2 的测试表 test_tbl1

    CREATE TABLE test_tbl1(col1 VARCHAR(10), col2 INT);
  2. 向表 test_tbl1 中插入测试数据。

    INSERT INTO test_tbl1 VALUES
    ('A1', 80), ('A1', 100), ('A1', NULL),
    ('B1', 60), ('B1', 70), ('B1', 85),
    ('C1', 75), ('C1', 80), ('C1', 85), ('C1', 99);
  3. 使用 PERCENTILE_CONT 计算列 col1 每个种类的中位数(即第 50 百分位数)。

    SELECT col1, PERCENTILE_CONT(col2, 0.5)
    FROM test_tbl1
    GROUP BY col1;

    返回结果如下:

    +------+----------------------------+
    | col1 | PERCENTILE_CONT(col2, 0.5) |
    +------+----------------------------+
    | A1 | 90 |
    | B1 | 70 |
    | C1 | 82.5 |
    +------+----------------------------+
    3 rows in set (0.002 sec)