quantile
Introduced in:v1.1.0
计算数值数据序列的近似 quantile。
此函数采用水库采样,水库大小最高为 8192,并使用随机数生成器进行采样。
结果是非确定性的。
如需获得精确的 分位数,请使用 quantileExact 函数。
在同一查询中使用多个 level 不同的 quantile* 函数时,它们的内部状态不会合并 (也就是说,查询效率会低于原本可达到的水平) 。
在这种情况下,请使用 quantiles 函数。
请注意,对于空的数值序列,quantile 将返回 NaN,而其 quantile* 变体则会根据具体变体返回 NaN 或该序列类型的默认值。
语法
quantile(level)(expr)别名: median
参数
level— 可选。分位数级别,为 0 到 1 之间的常量浮点数。建议将level的值设在[0.01, 0.99]范围内。默认值:0.5。当level=0.5时,该函数计算中位数。Float
参数项
expr— 基于列值的表达式,结果应为数值数据类型、Date、DateTime或DateTime64。(U)Int*或Int128或UInt128或Int256或UInt256或Float*或Decimal*或Date或DateTime或DateTime64
返回值
指定级别的近似分位数。数值参数将产生 Float64,而 Decimal、Date、DateTime 和 DateTime64 参数会保留其输入格式。Float64 或 Decimal* 或 Date 或 DateTime 或 DateTime64
示例
计算分位数
CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3);
SELECT quantile(val) FROM t;┌─quantile(val)─┐
│ 1.5 │
└───────────────┘另请参阅