首批通过分布式安全可靠测评,为关键业务系统打造
PERCENTILE_CONT
更新时间:2026-07-15 20:42:46
描述
该函数用于计算指定列的精确百分位数。该函数会对输入列进行升序排序,并根据给定的百分位值(percentile)返回对应的插值结果。
说明
对于 OceanBase 数据库 V4.3.5 版本,该函数从 V4.3.5 BP1 版本开始支持。
使用限制
当前版本的 PERCENTILE_CONT 不支持 DATETIME 类型。
语法声明
PERCENTILE_CONT(expr, percentile)
参数解释
expr:需要计算百分位数的目标列,当前必须为数值类型。具体支持的类型参考 支持类型。说明
PERCENTILE_CONT会自动忽略输入列中的NULL值。percentile:指定的百分位值,表示目标值在数据分布中的位置。取值范围为 [0, 1] 的浮点数常量。
支持类型
- 整数类型:
TINYINT、SMALLINT、MEDIUMINT、INT/INTEGER、BIGINT。 - 定点类型:
DECIMAL和NUMERIC。 - 浮点类型:
FLOAT和DOUBLE。 - Bit-Value 类型:
BIT。
返回类型
返回类型与 expr 一致。
返回一个处于指定百分位数的值。如果没有输入值恰好位于所需的百分位数,则使用两个最接近的输入值的线性插值来计算结果。
示例
创建一个包含列
col1和col2的测试表test_tbl1。CREATE TABLE test_tbl1(col1 VARCHAR(10), col2 INT);向表
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);使用
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