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
示例
计算精确排他分位数
SELECT quantileExactExclusive(0.25)(number) FROM numbers(5);┌─quantileExactExclusive(0.25)(number)─┐
│ 0.5 │
└──────────────────────────────────────┘计算多个 quantile 级别
SELECT quantileExactExclusive(0.1)(number), quantileExactExclusive(0.9)(number) FROM numbers(10);┌─quantileExactExclusive(0.1)(number)─┬─quantileExactExclusive(0.9)(number)─┐
│ 0.10000000000000009 │ 8.9 │
└─────────────────────────────────────┴─────────────────────────────────────┘