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

> Calcule le nombre approximatif de valeurs d’argument distinctes. C’est identique à uniqCombined, mais utilise un hachage 64 bits pour tous les types de données plutôt que uniquement pour le type de données String.

# uniqCombined64

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

Introduit dans : v20.1.0

Calcule le nombre approximatif de valeurs d’argument distinctes.
C’est la même chose que [`uniqCombined`](/fr/reference/functions/aggregate-functions/uniqCombined), mais utilise un hachage 64 bits pour tous les types de données au lieu de l’utiliser uniquement pour le type de données String.

Cette fonction fournit un résultat déterministe (il ne dépend pas de l’ordre de traitement de la requête).

<Note>
  Puisqu’elle utilise un hachage 64 bits pour tous les types, le résultat ne souffre pas d’une erreur très élevée pour des cardinalités nettement supérieures à `UINT_MAX`, contrairement à [`uniqCombined`](/fr/reference/functions/aggregate-functions/uniqCombined), qui utilise un hachage 32 bits pour les types non-String.
</Note>

Comparée à la fonction [uniq](/fr/reference/functions/aggregate-functions/uniq), la fonction uniqCombined64 :

* Consomme plusieurs fois moins de mémoire
* Offre une précision plusieurs fois supérieure

<Accordion title="Détails d’implémentation">
  Cette fonction calcule un hachage 64 bits pour tous les types de données et pour tous les paramètres de l’agrégat, puis l’utilise dans les calculs.
  Elle repose sur une combinaison de trois algorithmes : tableau, table de hachage et [HyperLogLog](https://en.wikipedia.org/wiki/HyperLogLog), avec une table de correction d’erreur :

  * Pour un petit nombre d’éléments distincts, un tableau est utilisé
  * Lorsque la taille de l’ensemble augmente, une table de hachage est utilisée
  * Pour un plus grand nombre d’éléments, HyperLogLog est utilisé, ce qui occupe une quantité fixe de mémoire
</Accordion>

**Syntaxe**

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

**Paramètres**

* `HLL_precision` — Facultatif. Le logarithme en base 2 du nombre de cellules dans HyperLogLog. La valeur par défaut est 17, ce qui correspond à 96 Kio d’espace (2^17 cellules, 6 bits chacune). Plage : \[12, 20]. [`UInt8`](/fr/reference/data-types/int-uint)

**Arguments**

* `x` — Un nombre variable de paramètres. [`Tuple(T)`](/fr/reference/data-types/tuple) ou [`Array(T)`](/fr/reference/data-types/array) ou [`Date`](/fr/reference/data-types/date) ou [`DateTime`](/fr/reference/data-types/datetime) ou [`String`](/fr/reference/data-types/string) ou [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float) ou [`Decimal`](/fr/reference/data-types/decimal)

**Valeur renvoyée**

Renvoie un nombre de type UInt64 représentant le nombre approximatif de valeurs d’arguments distinctes. [`UInt64`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple sur un jeu de données volumineux**

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

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

**Comparaison avec 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 │ -- 10.00 billion
└────────────────────────┘
┌─uniqCombined(number)─┐
│           5545308725 │ -- 5.55 billion
└──────────────────────┘
```

**Voir aussi**

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