PERCENTILE_CONT
描述
该函数用于计算指定列的精确百分位数。该函数会对输入列进行升序排序,并根据给定的百分位值(percentile)返回对应的插值结果。
使用限制
当前版本的 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 (0.002 sec)