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

> 異なる引数値のおおよその個数を計算します。uniqCombined と同じですが、String データ型だけでなく、すべてのデータ型に対して 64 ビットのハッシュを使用します。

# uniqCombined64

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

導入バージョン: v20.1.0

異なる引数の値のおおよその個数を計算します。
[`uniqCombined`](/ja/reference/functions/aggregate-functions/uniqCombined) と同じですが、String データ型 だけでなく、すべてのデータ型に対して 64 ビットハッシュ を使用します。

この関数は決定論的な結果を返します (クエリ処理の順序に依存しません) 。

<Note>
  すべての型に対して 64 ビットハッシュ を使用するため、非 String 型に 32 ビット hash を使用する [`uniqCombined`](/ja/reference/functions/aggregate-functions/uniqCombined) のように、`UINT_MAX` を大幅に超えるカーディナリティで非常に大きな error が発生することはありません。
</Note>

[uniq](/ja/reference/functions/aggregate-functions/uniq) 関数と比べると、uniqCombined64 関数には次の特長があります。

* メモリ消費量が数分の一で済みます
* 精度が数倍高くなります

<Accordion title="実装の詳細">
  この関数は、集約内のすべての parameter について、すべてのデータ型に対する 64 ビットハッシュ を計算し、それを計算に使用します。
  array、hash table、誤差補正テーブル付きの [HyperLogLog](https://en.wikipedia.org/wiki/HyperLogLog) という 3 つのアルゴリズムを組み合わせて使用します。

  * 異なる要素数が少ない場合は、array を使用します
  * set のサイズが大きくなると、hash table を使用します
  * 要素数がさらに多い場合は HyperLogLog を使用し、一定量のメモリを使用します
</Accordion>

**構文**

```sql theme={null}
uniqCombined64(HLL_precision)(x[, ...])
uniqCombined64(x[, ...])
```

**パラメータ**

* `HLL_precision` — 省略可能。HyperLogLog のセル数の2を底とする対数です。デフォルト値は 17 で、実質的な使用容量は 96 KiB です (2^17 個のセル、各 6 ビット) 。範囲: \[12, 20]。[`UInt8`](/ja/reference/data-types/int-uint)

**引数**

* `x` — 可変個の引数。[`Tuple(T)`](/ja/reference/data-types/tuple) または [`Array(T)`](/ja/reference/data-types/array) または [`Date`](/ja/reference/data-types/date) または [`DateTime`](/ja/reference/data-types/datetime) または [`String`](/ja/reference/data-types/string) または [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

異なる引数値のおおよその数を表す UInt64 型の値を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**大規模データセットの例**

```sql title=Query theme={null}
SELECT uniqCombined64(number) FROM numbers(1e10);
```

```response title=Response theme={null}
┌─uniqCombined64(number)─┐
│             9998568925 │
└────────────────────────┘
```

**uniqCombinedとの比較**

```sql title=Query theme={null}
-- 大規模データセットでの uniqCombined64
SELECT uniqCombined64(number) FROM numbers(1e10);

-- 同じデータセットでの uniqCombined は近似精度が低い
SELECT uniqCombined(number) FROM numbers(1e10);
```

```response title=Response theme={null}
┌─uniqCombined64(number)─┐
│             9998568925 │ -- 100億
└────────────────────────┘
┌─uniqCombined(number)─┐
│           5545308725 │ -- 55.5億
└──────────────────────┘
```

**関連項目**

* [uniq](/ja/reference/functions/aggregate-functions/uniq)
* [uniqCombined](/ja/reference/functions/aggregate-functions/uniqCombined)
* [uniqHLL12](/ja/reference/functions/aggregate-functions/uniqHLL12)
* [uniqExact](/ja/reference/functions/aggregate-functions/uniqExact)
* [uniqTheta](/ja/reference/functions/aggregate-functions/uniqthetasketch)
