跳转到主内容
跳转到主内容

quantilesExactInclusive

quantilesExactInclusive

引入版本:v20.1

使用包含式(inclusive)方法,对数值数据序列在多个不同水平上同时精确计算多个分位数

该函数等价于 quantileExactInclusive,但允许在一次遍历中计算多个分位数水平,这比多次调用单个分位数函数更高效。

此函数使用包含式(inclusive)方法来计算分位数,具体如 R-7 method 中所述。 这等价于 Excel 函数 PERCENTILE.INC

为了得到精确结果,所有传入的值会被合并到一个数组中,然后对其进行部分排序。 排序算法的复杂度为 O(N·log(N)),其中 N = std::distance(first, last) 次比较。

语法

quantilesExactInclusive(level1, level2, ...)(expr)

参数

  • level — 分位数的水平。取值为 0 到 1(含)之间的常量浮点数。建议将 level 设为 [0.01, 0.99] 范围内的值。Float*

参数说明

返回值

按指定级别返回对应分位数的数组,顺序与给定级别的顺序相同。Array(Float64)

示例

计算多个精确的含端点分位数

CREATE TABLE num AS numbers(1000);
SELECT quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number) FROM num;
┌─quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number)─┐
│ [249.75,499.5,749.25,899.1,949.05,989.01,998.001]                        │
└──────────────────────────────────────────────────────────────────────────┘