quantilesExact
Introduced in: v1.1.0
同时精确计算数值数据序列在不同级别上的多个分位数。
此函数等同于 quantileExact,但支持在单次遍历中计算多个分位数级别,因此比逐个调用分位数函数更高效。
为了获得精确值,所有传入的值都会合并到一个数组中,然后对其进行部分排序。因此,该函数会消耗 O(n) 内存,其中 n 是传入值的数量。
语法
quantilesExact(level1, level2, ...)(expr)参数
level— 分位数的级别。一个或多个介于 0 到 1 之间的常量浮点数。建议将level值设置在[0.01, 0.99]范围内。Float*
输入参数
expr— 基于列值计算的表达式,结果类型为数值数据类型、Date、DateTime或DateTime64。(U)Int*或Int128或UInt128或Int256或UInt256或Float*或Decimal*或Date或DateTime或DateTime64
返回值
按指定级别的顺序返回对应分位数组成的数组。对于数值数据类型,输出格式与输入格式一致。Array((U)Int*) 或 Array(Int128) 或 Array(UInt128) 或 Array(Int256) 或 Array(UInt256) 或 Array(Float*) 或 Array(Decimal*) 或 Array(Date) 或 Array(DateTime) 或 Array(DateTime64)
示例
计算多个精确分位数
SELECT quantilesExact(0.25, 0.5, 0.75)(number) FROM numbers(10)┌─quantilesExact(0.25, 0.5, 0.75)(number)─┐
│ [2,5,7] │
└─────────────────────────────────────────┘