Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantileDeterministic

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、DateDateTime 的 expression。(U)Int*Int128UInt128Int256UInt256Float*DateDateTime
  • determinator — 在蓄水池 sampling 算法中,使用其哈希值代替随机数生成器,以使 sampling 结果具有 deterministic 性。determinator 可以是任意 deterministic 的正数,例如用户 ID 或事件 ID。如果同一个 determinator 值出现过于频繁,函数将无法正确工作。UInt*

返回值

返回指定级别的近似分位数。Float64DateDateTime

示例

计算确定性分位数

CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3);

SELECT quantileDeterministic(val, 1) FROM t;
┌─quantileDeterministic(val, 1)─┐
│                           1.5 │
└───────────────────────────────┘

另请参阅

Navigation