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

quantiles 函数

quantiles

引入版本:v1.1

在一次计算中,同时计算数值数据序列在不同分位点上的多个近似分位数

此函数使用水塘抽样,水塘容量最大为 8192,并使用随机数生成器进行抽样。 结果是非确定性的。

当需要多个分位数值时,使用 quantiles 比多次分别调用 quantile 函数更高效,因为所有分位数都在对数据的一次遍历中完成计算。

语法

quantiles(level1, level2, ...)(expr)

参数

  • level — 分位数的级别。一个或多个 0 到 1 之间的常量浮点数。推荐使用取值范围为 [0.01, 0.99]levelFloat*

参数

返回值

由指定级别的近似分位数组成的数组,顺序与这些级别的指定顺序一致。Array(Float64)Array(Date)Array(DateTime)

示例

高效计算多个分位数

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)─┐
│ [3, 5.5, 8, 9.5]                     │
└──────────────────────────────────────┘