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

> Calcula o número aproximado de valores de argumento distintos.

# uniqCombined

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

Introduzido em: v1.1.0

Calcula o número aproximado de valores de argumento distintos.
Fornece o resultado de forma determinística (não depende da ordem de processamento da consulta).

<Note>
  Como usa um hash de 32 bits para tipos diferentes de `String`, o resultado terá um erro muito alto para cardinalidades significativamente maiores que `UINT_MAX` (o erro aumentará rapidamente após algumas dezenas de bilhões de valores distintos).
  Se as cardinalidades forem maiores que `UINT_MAX`, use [`uniqCombined64`](/pt-BR/reference/functions/aggregate-functions/uniqCombined64).
</Note>

Em comparação com a função uniq, a função uniqCombined:

* Consome várias vezes menos memória
* Calcula com precisão várias vezes maior
* Em geral, tem desempenho ligeiramente inferior. Em alguns cenários, uniqCombined pode ter desempenho melhor que uniq, por exemplo, com consultas distribuídas que transmitem um grande número de estados de agregação pela rede

<Accordion title="Detalhes de implementação">
  Esta função calcula um hash (hash de 64 bits para String e de 32 bits nos demais casos) para todos os parâmetros da agregação e, em seguida, o usa nos cálculos.
  Ela usa uma combinação de três algoritmos: array, tabela hash e HyperLogLog com uma tabela de correção de erros:

  * Para um pequeno número de elementos distintos, é usado um array
  * Quando o tamanho do conjunto aumenta, é usada uma tabela hash
  * Para um número maior de elementos, é usado HyperLogLog, que ocupará uma quantidade fixa de memória
</Accordion>

**Sintaxe**

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

**Parâmetros**

* `HLL_precision` — Opcional. O logaritmo de base 2 do número de células no HyperLogLog. O valor padrão é 17, o que corresponde, na prática, a 96 KiB de espaço (2^17 células, 6 bits cada). Intervalo: \[12, 20]. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Argumentos**

* `x` — Um número variável de argumentos. [`Tuple(T)`](/pt-BR/reference/data-types/tuple) ou [`Array(T)`](/pt-BR/reference/data-types/array) ou [`Date`](/pt-BR/reference/data-types/date) ou [`DateTime`](/pt-BR/reference/data-types/datetime) ou [`String`](/pt-BR/reference/data-types/string) ou [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal`](/pt-BR/reference/data-types/decimal)

**Valor retornado**

Retorna um número do tipo UInt64 que representa o número aproximado de valores de argumento distintos. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

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

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

**Com precisão personalizada**

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

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

**Veja também**

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