quantiles
引入版本:v1.1.0
同时计算数值数据序列在不同级别上的多个近似分位数。
此函数采用水塘抽样,水塘容量最大为 8192,并使用随机数生成器进行采样。 结果是非确定性的。
当需要多个分位数值时,使用 quantiles 比分别调用多个 quantile 函数更高效,因为所有分位数都可在单次遍历数据时计算完成。
语法
quantiles(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
返回值
按指定级别的顺序返回的近似分位数组。数值参数返回 Float64,而 Decimal、Date、DateTime 和 DateTime64 参数会保留其输入格式。Array(Float64) 或 Array(Decimal*) 或 Array(Date) 或 Array(DateTime) 或 Array(DateTime64)
示例
高效计算多个分位数
CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
SELECT quantiles(0.25, 0.5, 0.75, 0.9)(val) FROM t;┌─quantiles(0.25, 0.5, 0.75, 0.9)(val)─┐
│ [2.5,5,7.5,9] │
└──────────────────────────────────────┘