> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> 数値データの数列について、各要素の重みを考慮した分位点を正確に計算します。

# quantileExactWeighted

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

導入バージョン: v1.1.0

各要素の重みを考慮して、数値データの数列の[分位点](https://en.wikipedia.org/wiki/Quantile)を正確に計算します。

正確な値を得るために、渡されたすべての値を配列にまとめ、その後で部分的にソートします。
各値は、その値が `weight` 回存在するとみなして、重み付きでカウントされます。
このアルゴリズムではハッシュテーブルを使用します。
そのため、渡された値に同じものが多く含まれる場合、この関数が消費する RAM は [`quantileExact`](/docs/ja/reference/functions/aggregate-functions/quantileExact#quantileExact) より少なくなります。
この関数は `quantileExact` の代わりに使用でき、重みとして 1 を指定できます。

1 つのクエリ内で異なるレベルの複数の `quantile*` 関数を使用する場合、内部状態は結合されません (つまり、クエリは本来より非効率になります) 。
この場合は、[quantiles](/docs/ja/reference/functions/aggregate-functions/quantiles#quantiles) 関数を使用してください。

**構文**

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

**別名**: `medianExactWeighted`

**パラメータ**

* `level` — 省略可能。分位点のレベルです。0 から 1 までの定数の浮動小数点数です。`level` には `[0.01, 0.99]` の範囲の値を使用することを推奨します。デフォルト値: 0.5。`level=0.5` の場合、この関数は中央値を計算します。[`Float*`](/docs/ja/reference/data-types/float)

**引数**

* `expr` — カラム値に対する式です。結果の型は数値データ型、`Date`、`DateTime`、または `DateTime64` です。[`(U)Int*`](/docs/ja/reference/data-types/int-uint) または [`Int128`](/docs/ja/reference/data-types/int-uint) または [`UInt128`](/docs/ja/reference/data-types/int-uint) または [`Int256`](/docs/ja/reference/data-types/int-uint) または [`UInt256`](/docs/ja/reference/data-types/int-uint) または [`Float*`](/docs/ja/reference/data-types/float) または [`Decimal*`](/docs/ja/reference/data-types/decimal) または [`Date`](/docs/ja/reference/data-types/date) または [`DateTime`](/docs/ja/reference/data-types/datetime) または [`DateTime64`](/docs/ja/reference/data-types/datetime64)
* `weight` — 数列の要素の重みを格納するカラムです。重みは値の出現回数を表します。[`UInt*`](/docs/ja/reference/data-types/int-uint)

**戻り値**

指定したレベルの分位点です。数値データ型の場合、出力フォーマットは入力フォーマットと一致します。[`(U)Int*`](/docs/ja/reference/data-types/int-uint) または [`Int128`](/docs/ja/reference/data-types/int-uint) または [`UInt128`](/docs/ja/reference/data-types/int-uint) または [`Int256`](/docs/ja/reference/data-types/int-uint) または [`UInt256`](/docs/ja/reference/data-types/int-uint) または [`Float*`](/docs/ja/reference/data-types/float) または [`Decimal*`](/docs/ja/reference/data-types/decimal) または [`Date`](/docs/ja/reference/data-types/date) または [`DateTime`](/docs/ja/reference/data-types/datetime) または [`DateTime64`](/docs/ja/reference/data-types/datetime64)

**例**

**厳密な重み付き分位点を計算する**

```sql title=Query theme={null}
CREATE TABLE t (
    n Int32,
    val Int32
) ENGINE = Memory;

-- Insert the sample data
INSERT INTO t VALUES
(0, 3),
(1, 2),
(2, 1),
(5, 4);

SELECT quantileExactWeighted(n, val) FROM t;
```

```response title=Response theme={null}
┌─quantileExactWeighted(n, val)─┐
│                             1 │
└───────────────────────────────┘
```

**関連項目**

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