Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantilesExactInclusive

quantilesExactInclusive

引入版本:v20.1.0

使用包含式方法,同时精确计算数值数据序列在不同级别上的多个分位数

此函数等同于 quantileExactInclusive,但支持在一次遍历中计算多个分位数级别,因此比逐个调用分位数函数更高效。

此函数使用包含式方法计算分位数,如 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*

Arguments

  • expr — 基于列值计算的表达式,结果为数值 data types、DateDateTime(U)Int*Float*DateDateTime

返回值

由指定级别的分位数组成的数组,顺序与指定的级别顺序一致。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]                        │
└──────────────────────────────────────────────────────────────────────────┘
Navigation