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

# uniqCombined

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

Introduit dans : v1.1.0

Calcule le nombre approximatif de valeurs d’argument distinctes.
Le résultat est déterministe (il ne dépend pas de l’ordre de traitement de la requête).

<Note>
  Comme cette fonction utilise un hachage sur 32 bits pour les types autres que `String`, le résultat présentera une erreur très élevée pour des cardinalités nettement supérieures à `UINT_MAX` (l’erreur augmentera rapidement au-delà de quelques dizaines de milliards de valeurs distinctes).
  Si les cardinalités dépassent `UINT_MAX`, vous devez utiliser [`uniqCombined64`](/fr/reference/functions/aggregate-functions/uniqCombined64) à la place.
</Note>

Par rapport à la fonction uniq, la fonction uniqCombined :

* Consomme plusieurs fois moins de mémoire
* Offre une précision plusieurs fois supérieure
* Présente généralement des performances légèrement inférieures. Dans certains cas, uniqCombined peut être plus performant que uniq, par exemple avec des requêtes distribuées qui transmettent un grand nombre d’états d’agrégation sur le réseau

<Accordion title="Détails d’implémentation">
  Cette fonction calcule un hachage (sur 64 bits pour `String`, sinon sur 32 bits) pour tous les paramètres de l’agrégat, puis l’utilise dans les calculs.
  Elle combine trois algorithmes : tableau, table de hachage et HyperLogLog avec une table de correction des erreurs :

  * 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}
uniqCombined(HLL_precision)(x[, ...])
uniqCombined(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 en pratique à 96 KiB d’espace (2^17 cellules, 6 bits chacune). Plage : \[12, 20]. [`UInt8`](/fr/reference/data-types/int-uint)

**Arguments**

* `x` — Un nombre variable d’arguments. [`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**

**Utilisation de base**

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

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

**Avec une précision personnalisée**

```sql title=Query theme={null}
SELECT uniqCombined(15)(number) FROM numbers(1e5);
```

```response title=Response theme={null}
┌─uniqCombined(15)(number)─┐
│                   100768 │
└──────────────────────────┘
```

**Voir aussi**

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