quantileExactHigh
与 quantileExact 类似,此函数计算数值数据序列的精确分位数。
所有传入的值会被合并到一个数组中,然后对该数组进行完整排序,从而获得精确值。排序算法的复杂度为 O(N·log(N)),其中 N = std::distance(first, last) 次比较。
返回值取决于分位数水平(level)以及选定元素的个数。例如,如果 level 为 0.5,则在元素个数为偶数时函数返回较高的中位数值,在元素个数为奇数时返回中间的中位数值。中位数的计算方式类似于 Python 中使用的 median_high 实现。对于其他 level,返回下标为 level * size_of_array 对应的元素。
该实现的行为与当前的 quantileExact 实现完全一致。
在一个查询中使用多个不同 level 的 quantile* 函数时,其内部状态不会被合并(也就是说,该查询的执行效率低于理论最优)。在这种情况下,请使用 quantiles 函数。
语法
别名:medianExactHigh。
参数
level— 分位数级别。可选参数,取值为 0 到 1 之间的常量浮点数。推荐使用范围为[0.01, 0.99]的level值。默认值:0.5。在level=0.5时,函数计算中位数。expr— 对列值进行计算的表达式,结果为数值型数据类型、Date 或 DateTime。
返回值
- 指定级别的分位数。
类型:
示例
查询:
结果: