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

quantileExactLow

quantileExactLow

引入版本:v20.8

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

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

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

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

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

语法

quantileExactLow(level)(expr)

别名medianExactLow

参数

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

参数

返回值

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

示例

计算精确的低位分位数

SELECT quantileExactLow(number) FROM numbers(10);
┌─quantileExactLow(number)─┐
│                        4 │
└──────────────────────────┘

计算指定分位数水平

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