> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 使用 t-digest 算法计算数值数据序列的近似分位数。

# quantileTDigestWeighted

<div id="quantileTDigestWeighted">
  ## quantileTDigestWeighted
</div>

引入版本：v20.1.0

使用 [t-digest](https://github.com/tdunning/t-digest/blob/master/docs/t-digest-paper/histo.pdf) 算法计算数值数据序列的近似[分位数](https://en.wikipedia.org/wiki/Quantile)。
该函数会将序列中每个元素的权重考虑在内。

最大误差为 1%。
内存消耗为 `log(n)`，其中 `n` 为值的数量。

该函数的性能低于 [`quantile`](/zh/reference/functions/aggregate-functions/quantile) 和 [`quantileTiming`](/zh/reference/functions/aggregate-functions/quantileTiming)。
但从状态大小与精度的比率来看，该函数明显优于 `quantile`。

结果取决于查询的执行顺序，因此是非确定性的。

当在一个查询中使用多个不同级别的 `quantile*` 函数时，内部状态不会被合并 (也就是说，查询的效率会低于原本可能达到的水平) 。
在这种情况下，请使用 [`quantiles`](/zh/reference/functions/aggregate-functions/quantiles#quantiles) 函数。

<Note>
  不建议将 `quantileTDigestWeighted` 用于[极小的数据集](https://github.com/tdunning/t-digest/issues/167#issuecomment-828650275)，否则可能会导致较大误差。
  在这种情况下，可以考虑改用 [`quantileTDigest`](/zh/reference/functions/aggregate-functions/quantileTDigest)。
</Note>

**语法**

```sql theme={null}
quantileTDigestWeighted(level)(expr, weight)
```

**别名**: `medianTDigestWeighted`

**参数**

* `level` — 可选。分位数的级别。取值为 0 到 1 之间的常量浮点数。建议将 `level` 设为 `[0.01, 0.99]` 范围内的值。默认值：0.5。当 `level=0.5` 时，该函数计算中位数。[`Float*`](/zh/reference/data-types/float)

**参数项**

* `expr` — 基于列值的表达式，结果必须为数值 data types、Date 或 DateTime。[`(U)Int*`](/zh/reference/data-types/int-uint) 或 [`Float*`](/zh/reference/data-types/float) 或 [`Decimal*`](/zh/reference/data-types/decimal) 或 [`Date`](/zh/reference/data-types/date) 或 [`DateTime`](/zh/reference/data-types/datetime)
* `weight` — 包含序列元素权重的列。权重表示值出现的次数。[`UInt*`](/zh/reference/data-types/int-uint)

**返回值**

指定级别的近似分位数。[`Float64`](/zh/reference/data-types/float) 或 [`Date`](/zh/reference/data-types/date) 或 [`DateTime`](/zh/reference/data-types/datetime)

**示例**

**使用 t-digest 计算加权分位数**

```sql title=Query theme={null}
SELECT quantileTDigestWeighted(number, 1) FROM numbers(10);
```

```response title=Response theme={null}
┌─quantileTDigestWeighted(number, 1)─┐
│                                4.5 │
└────────────────────────────────────┘
```

**另请参阅**

* [median](/zh/reference/functions/aggregate-functions/median)
* [quantiles](/zh/reference/functions/aggregate-functions/quantiles)
