跳转到主要内容

quantileExactExclusive

引入版本:v20.1.0 quantileExact 类似,此函数用于计算数值数据序列的精确分位数 此函数等价于 quantileExact,但采用 exclusive 方法计算分位数,如 R-6 method 所述。 使用此函数时,分位数的计算方式如下:对于给定分位数 p,其插值公式为:x[floor(n*p)] + (n*p - floor(n*p)) * (x[floor(n*p)+1] - x[floor(n*p)]),其中 x 为已排序数组。 为了得到精确值,所有传入的值都会合并到一个数组中,然后对其进行完全排序。 排序算法的复杂度为 O(N·log(N)),其中 N = std::distance(first, last) 在一个查询中使用多个具有不同级别的 quantile* 函数时,其内部状态不会合并 (也就是说,查询效率会低于其应有水平) 。 在这种情况下,请使用 quantiles 函数。 语法
quantileExactExclusive(level)(expr)
参数
  • level — 分位数的级别。取值为 0 到 1 之间 (不含端点) 的常量浮点数。建议将 level 值设在 (0.01, 0.99) 范围内。Float*
参数 返回值 返回指定级别的分位数。Float64 示例 计算精确排他分位数
Query
SELECT quantileExactExclusive(0.25)(number) FROM numbers(5);
Response
┌─quantileExactExclusive(0.25)(number)─┐
│                                  0.5 │
└──────────────────────────────────────┘
计算多个 quantile 级别
Query
SELECT quantileExactExclusive(0.1)(number), quantileExactExclusive(0.9)(number) FROM numbers(10);
Response
┌─quantileExactExclusive(0.1)(number)─┬─quantileExactExclusive(0.9)(number)─┐
│                                 0.4 │                                 8.6 │
└─────────────────────────────────────┴─────────────────────────────────────┘
最后修改于 2026年6月10日