quantileExactLow
quantileExactLow
引入版本:v20.8.0
与 quantileExact 类似,该函数计算数值数据序列的精确分位数。
为了得到精确值,会将所有传入的值合并到一个数组中,然后对该数组进行完整排序。排序算法的复杂度为 O(N·log(N)),其中 N = std::distance(first, last) 为比较次数。
返回值取决于分位数级别和选取中的元素个数。比如当级别为 0.5 时,对于元素个数为偶数的情况,函数返回较小的中位数值;对于元素个数为奇数的情况,返回中间的中位数值。中位数的计算方式与 Python 中使用的 median_low 实现类似。
对于所有其他级别,返回数组中索引为 level * size_of_array 的元素。
在一个查询中使用多个不同级别的 quantile* 函数时,它们的内部状态不会被合并 (也就是说,查询的执行效率会低于最优) 。在这种情况下,请使用 quantiles 函数。
Syntax
quantileExactLow(level)(expr)
别名:medianExactLow
参数
level — 可选参数。分位数的水平。取值为 0 到 1 之间的常量浮点数。推荐使用 [0.01, 0.99] 范围内的 level 值。默认值:0.5。当 level=0.5 时,函数计算中位数。Float*
expr — 作用于列值的表达式,其结果为数值类型、Date 或 DateTime。(U)Int* 或 Float* 或 Decimal* 或 Date 或 DateTime
返回值
返回指定水平的分位数值。Float64 或 Date 或 DateTime
示例
计算精确的低位分位数
SELECT quantileExactLow(number) FROM numbers(10);
┌─quantileExactLow(number)─┐ │ 4 │ └──────────────────────────┘
计算指定分位数水平
SELECT quantileExactLow(0.1)(number) FROM numbers(10);
┌─quantileExactLow(0.1)(number)─┐ │ 1 │ └───────────────────────────────┘
别名:medianExactLow
参数
level— 可选参数。分位数的水平。取值为 0 到 1 之间的常量浮点数。推荐使用[0.01, 0.99]范围内的level值。默认值:0.5。当level=0.5时,函数计算中位数。Float*
参数
返回值
返回指定水平的分位数值。Float64 或 Date 或 DateTime
示例
计算精确的低位分位数
计算指定分位水平