> ## 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.

> 按指定精度，根据数值数据序列中各成员的权重计算分位数。

# quantilesTimingWeighted

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

引入版本：v1.1.0

在指定精度下，同时计算数值数据序列在不同级别上的多个[分位数](https://en.wikipedia.org/wiki/Quantile)，并考虑序列中每个成员的权重。

此函数等同于 [`quantileTimingWeighted`](/zh/reference/functions/aggregate-functions/quantileTimingWeighted)，但支持在一次遍历中计算多个分位数级别，因此比逐个调用单独的分位数函数更高效。

结果是确定性的 (即不依赖于查询处理顺序) 。该函数针对描述网页加载时间或后端响应时间等分布的序列进行了优化。

**准确性**

在以下情况下，计算结果是准确的：

* 值的总数不超过 5670。
* 值的总数超过 5670，但页面加载时间小于 1024 ms。

否则，计算结果会被舍入为最接近的 16 ms 倍数。

<Note>
  对于计算页面加载时间分位数，此函数比 [`quantiles`](/zh/reference/functions/aggregate-functions/quantiles) 更高效且更准确。
</Note>

**语法**

```sql theme={null}
quantilesTimingWeighted(level1, level2, ...)(expr, weight)
```

**参数**

* `level` — 分位数的级别。一个或多个介于 0 到 1 之间的常量浮点数。建议将 `level` 值设在 `[0.01, 0.99]` 范围内。[`Float*`](/zh/reference/data-types/float)

**参数说明**

* `expr` — 基于列值的表达式，返回一个 `Float*` 类型的数值。如果向函数传入负值，其行为未定义。如果该值大于 30,000 (即页面加载时间超过 30 秒) ，则视为 30,000。[`Float*`](/zh/reference/data-types/float)
* `weight` — 包含序列元素权重的列。权重表示该值出现的次数。[`UInt*`](/zh/reference/data-types/int-uint)

**返回值**

按指定级别返回的分位数组，顺序与这些级别的指定顺序相同。[`Array(Float32)`](/zh/reference/data-types/array)

**示例**

**计算多个加权时间分位数**

```sql title=Query theme={null}
SELECT quantilesTimingWeighted(0.5, 0.99)(response_time, weight) FROM t;
```

```response title=Response theme={null}
┌─quantilesTimingWeighted(0.5, 0.99)(response_time, weight)─┐
│ [112, 162]                                                │
└───────────────────────────────────────────────────────────┘
```

**另请参阅**

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