跳到主要内容
跳到主要内容

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 函数。

语法

quantileExactHigh(level)(expr)

别名:medianExactHigh

参数

  • level — 分位数级别。可选参数,取值为 0 到 1 之间的常量浮点数。推荐使用范围为 [0.01, 0.99]level 值。默认值:0.5。在 level=0.5 时,函数计算中位数
  • expr — 对列值进行计算的表达式,结果为数值型数据类型DateDateTime

返回值

  • 指定级别的分位数。

类型:

  • 对于数值型输入数据类型,返回 Float64
  • 如果输入值是 Date 类型,返回 Date
  • 如果输入值是 DateTime 类型,返回 DateTime

示例

查询:

SELECT quantileExactHigh(number) FROM numbers(10)

结果:

┌─quantileExactHigh(number)─┐
│                         5 │
└───────────────────────────┘