Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantileInterpolatedWeighted

quantileInterpolatedWeighted

引入版本:v23.1.0

使用线性插值计算数值数据序列的分位数,并考虑每个元素的权重。

为了获得插值后的值,所有传入的值都会合并到一个数组中,然后按其对应的权重排序。 随后使用加权百分位数方法进行分位数插值:先基于权重构建累积分布,再结合权重和值执行线性插值,从而计算分位数。

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

语法

quantileInterpolatedWeighted(level)(expr, weight)

别名: medianInterpolatedWeighted

参数

  • level — 可选。分位数级别。取值为 0 到 1 之间的常量浮点数。建议将 level 设为 [0.01, 0.99] 范围内的值。默认值:0.5。当 level=0.5 时,此函数计算中位数。Float*

参数

返回值

指定级别的分位数。对于数值类型,输出格式与输入格式一致。(U)Int*Int128UInt128Int256UInt256Float*Decimal*DateDateTimeDateTime64

示例

计算插值加权分位数

CREATE TABLE t (
    n Int32,
    val UInt32
) ENGINE = Memory;

INSERT INTO t VALUES (0, 3), (1, 2), (2, 1), (5, 4);

SELECT quantileInterpolatedWeighted(n, val) FROM t;
┌─quantileInterpolatedWeighted(n, val)─┐
│                                    1 │
└──────────────────────────────────────┘

另请参阅

Navigation