跳到主要内容
跳到主要内容

quantileDeterministic

计算数值数据序列的近似分位数

该函数使用水库大小最多为 8192 的水库抽样以及确定性的采样算法,因此结果是确定性的。若要获取精确分位数,请使用 quantileExact 函数。

在同一个查询中使用多个具有不同级别的 quantile* 函数时,其内部状态不会被合并(也就是说,该查询的执行效率会低于理论最优)。在这种情况下,请使用 quantiles 函数。

语法

quantileDeterministic(level)(expr, determinator)

别名:medianDeterministic

参数

  • level — 分位水平。可选参数。取值为 0 到 1 之间的常量浮点数。推荐使用位于 [0.01, 0.99] 范围内的 level 值。默认值:0.5。当 level=0.5 时,函数计算中位数
  • expr — 对列值进行计算的表达式,结果为数值数据类型DateDateTime
  • determinator — 在蓄水池抽样算法中,用其哈希值代替随机数生成器以使抽样结果具有确定性的数字。作为 determinator,可以使用任意确定性的正数值,例如用户 id 或事件 id。如果相同的 determinator 值出现得过于频繁,函数将无法正确工作。

返回值

  • 指定 level 的近似分位数。

类型:

  • 数值数据类型输入时返回 Float64
  • 如果输入值的类型为 Date,则返回 Date
  • 如果输入值的类型为 DateTime,则返回 DateTime

示例

输入表:

┌─val─┐
│   1 │
│   1 │
│   2 │
│   3 │
└─────┘

查询:

SELECT quantileDeterministic(val, 1) FROM t

返回结果:

┌─quantileDeterministic(val, 1)─┐
│                           1.5 │
└───────────────────────────────┘

另请参阅