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

quantileExactLow

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

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

返回值取决于分位数级别和选取中的元素个数。比如当级别为 0.5 时,对于元素个数为偶数的情况,函数返回较小的中位数值;对于元素个数为奇数的情况,返回中间的中位数值。中位数的计算方式与 Python 中使用的 median_low 实现类似。

对于所有其他级别,返回数组中索引为 level * size_of_array 的元素。例如:

SELECT quantileExactLow(0.1)(number) FROM numbers(10)

┌─quantileExactLow(0.1)(number)─┐
│                             1 │
└───────────────────────────────┘

在一个查询中使用多个不同级别的 quantile* 函数时,它们的内部状态不会被合并(也就是说,查询的执行效率会低于最优)。在这种情况下,请使用 quantiles 函数。

语法

quantileExactLow(level)(expr)

别名:medianExactLow

参数

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

返回值

  • 指定水平的分位数。

类型:

  • 数值型输入时返回 Float64
  • 输入值为 Date 类型时返回 Date
  • 输入值为 DateTime 类型时返回 DateTime

示例

查询:

SELECT quantileExactLow(number) FROM numbers(10)

结果:

┌─quantileExactLow(number)─┐
│                        4 │
└──────────────────────────┘