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

quantileExactHigh

quantileExactHigh

引入版本:v20.8

quantileExact 类似,该函数计算数值数据序列的精确分位数

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

返回值取决于分位数水平和选定集合中元素的数量。也就是说,如果水平为 0.5,则在元素数量为偶数时,函数返回较大的中位数值,在元素数量为奇数时,返回中间的中位数值。 中位数的计算方式与 Python 中使用的 median_high 实现类似。

对于所有其他水平,返回索引位置对应于 level * size_of_array 的元素。

在查询中使用多个带有不同水平的 quantile* 函数时,其内部状态不会被合并(也就是说,该查询的执行效率低于理论上的最优情况)。 在这种情况下,请使用 quantiles 函数。

语法

quantileExactHigh(level)(expr)

别名: medianExactHigh

参数

  • level — 可选。分位数的水平。取值为 0 到 1 之间的常量浮点数。建议使用范围为 [0.01, 0.99]level 值。默认值:0.5。当 level=0.5 时,函数计算中位数。Float*

参数说明

返回值

返回指定水平的分位数。Float64DateDateTime

示例

计算精确高位分位数

SELECT quantileExactHigh(number) FROM numbers(10);
┌─quantileExactHigh(number)─┐
│                         5 │
└───────────────────────────┘

计算特定分位点

SELECT quantileExactHigh(0.1)(number) FROM numbers(10);
┌─quantileExactHigh(0.1)(number)─┐
│                              1 │
└────────────────────────────────┘