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

> Вычисляет приблизительное количество различных значений аргумента. Аналогична uniqCombined, но использует 64-битный хеш для всех типов данных, а не только для типа данных String.

# uniqCombined64

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

Добавленный в: v20.1.0

Вычисляет приблизительное количество различных значений аргумента.
То же, что и [`uniqCombined`](/docs/ru/reference/functions/aggregate-functions/uniqCombined), но использует 64-битный хеш для всех типов данных, а не только для типа данных String.

Эта функция возвращает детерминированный результат (он не зависит от порядка обработки запроса).

<Note>
  Поскольку для всех типов используется 64-битный хеш, результат не страдает от очень большой погрешности при кардинальностях, значительно превышающих `UINT_MAX`, как у [`uniqCombined`](/docs/ru/reference/functions/aggregate-functions/uniqCombined), который использует 32-битный хеш для типов, отличных от String.
</Note>

По сравнению с функцией [uniq](/docs/ru/reference/functions/aggregate-functions/uniq), функция uniqCombined64:

* Потребляет в несколько раз меньше памяти
* Обеспечивает в несколько раз более высокую точность

<Accordion title="Подробности реализации">
  Эта функция вычисляет 64-битный хеш для всех типов данных и всех параметров агрегатной функции, а затем использует его в вычислениях.
  Она использует комбинацию трех алгоритмов: массива, хеш-таблицы и [HyperLogLog](https://en.wikipedia.org/wiki/HyperLogLog) с таблицей коррекции ошибок:

  * Для небольшого числа различных элементов используется массив
  * Когда размер множества увеличивается, используется хеш-таблица
  * Для еще большего числа элементов используется HyperLogLog, который занимает фиксированный объем памяти
</Accordion>

**Синтаксис**

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

**Параметры**

* `HLL_precision` — Необязательный параметр. Двоичный логарифм числа ячеек в HyperLogLog. Значение по умолчанию — 17, что соответствует примерно 96 КиБ памяти (2^17 ячеек по 6 бит каждая). Диапазон: \[12, 20]. [`UInt8`](/docs/ru/reference/data-types/int-uint)

**Аргументы**

* `x` — Переменное число параметров. [`Tuple(T)`](/docs/ru/reference/data-types/tuple) или [`Array(T)`](/docs/ru/reference/data-types/array) или [`Date`](/docs/ru/reference/data-types/date) или [`DateTime`](/docs/ru/reference/data-types/datetime) или [`String`](/docs/ru/reference/data-types/string) или [`(U)Int*`](/docs/ru/reference/data-types/int-uint) или [`Float*`](/docs/ru/reference/data-types/float) или [`Decimal`](/docs/ru/reference/data-types/decimal)

**Возвращаемое значение**

Возвращает число типа UInt64, которое представляет приблизительное количество различных значений аргументов. [`UInt64`](/docs/ru/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 with large dataset
SELECT uniqCombined64(number) FROM numbers(1e10);

-- uniqCombined with same dataset shows poor approximation
SELECT uniqCombined(number) FROM numbers(1e10);
```

```response title=Response theme={null}
┌─uniqCombined64(number)─┐
│             9998568925 │
└────────────────────────┘
approximately 10.00 billion
┌─uniqCombined(number)─┐
│           5545308725 │
└──────────────────────┘
approximately 5.55 billion
```

**См. также**

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