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

quantileExact 系列函数

quantileExact

引入于:v1.1

精确计算数值数据序列的分位数

为了得到精确值,所有传入的值会被合并到一个数组中,然后对该数组进行部分排序。 因此,该函数会消耗 O(n) 的内存,其中 n 是传入值的数量。 不过,对于值数量较少的情况,该函数非常高效。

在一个查询中使用多个具有不同分位水平的 quantile* 函数时,其内部状态不会被合并(也就是说,该查询的执行效率会低于本可以达到的水平)。 在这种情况下,请使用 quantiles 函数。

语法

quantileExact(level)(expr)

别名: medianExact

参数

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

参数列表

返回值

指定分位水平的分位数值。对于数值数据类型,输出格式与输入格式相同。(U)Int*Float*Decimal*DateDateTime

示例

计算精确分位数

SELECT quantileExact(number) FROM numbers(10);
┌─quantileExact(number)─┐
│                     5 │
└───────────────────────┘

另请参阅