Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantiles 函数

quantiles

引入版本:v1.1.0

同时计算数值数据序列在不同级别上的多个近似分位数

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

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

语法

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

参数

  • level — 分位数的级别。一个或多个从 0 到 1 的常量浮点数。建议将 level 的值设在 [0.01, 0.99] 范围内。Float*

参数

返回值

按指定级别的顺序返回的近似分位数组。数值参数返回 Float64,而 DecimalDateDateTimeDateTime64 参数会保留其输入格式。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]                        │
└──────────────────────────────────────┘
Navigation