跳转到主要内容

quantileDeterministic

Introduced in: v1.1.0 计算数值数据序列的近似分位数 此函数采用水库采样,水库大小最多为 8192,并使用确定性采样算法。 结果是确定性的。 如需获取精确分位数,请使用 quantileExact 函数。 当在一个查询中使用多个不同级别的 quantile* 函数时,其内部状态不会合并 (也就是说,查询效率会低于原本可能达到的水平) 。 在这种情况下,请使用 quantiles 函数。 Syntax
quantileDeterministic(level)(expr, determinator)
别名: medianDeterministic 参数
  • level — 可选。分位数的级别。取值为 0 到 1 之间的常量浮点数。建议将 level 设为 [0.01, 0.99] 范围内的值。默认值:0.5。当 level=0.5 时,该函数计算中位数。Float*
参数说明
  • expr — 基于列值计算,结果为数值 data types、Date 或 DateTime 的 expression。(U)Int*Float*Decimal*DateDateTime
  • determinator — 在蓄水池 sampling 算法中,使用其哈希值代替随机数生成器,以使 sampling 结果具有 deterministic 性。determinator 可以是任意 deterministic 的正数,例如用户 ID 或事件 ID。如果同一个 determinator 值出现过于频繁,函数将无法正确工作。(U)Int*
返回值 返回指定级别的近似分位数。Float64DateDateTime 示例 计算确定性分位数
Query
CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3);

SELECT quantileDeterministic(val, 1) FROM t;
Response
┌─quantileDeterministic(val, 1)─┐
│                           1.5 │
└───────────────────────────────┘
另请参阅
最后修改于 2026年6月10日