uniq
Introduzido em: v1.1.0
Calcula o número aproximado de valores distintos do argumento.
A função usa um algoritmo de amostragem adaptativa. Para o estado de cálculo, a função usa uma amostra de valores de hash de elementos de até 65536. Esse algoritmo é muito preciso e muito eficiente no uso da CPU. Quando a consulta contém várias dessas funções, usar uniq é quase tão rápido quanto usar outras funções de agregação.
Detalhes de implementação
Esta função calcula um hash para todos os parâmetros da agregação e depois o usa nos cálculos.
Ela usa um algoritmo de amostragem adaptativa.
Para o estado de cálculo, a função usa uma amostra de valores de hash de elementos de até 65536.
Esse algoritmo é muito preciso e muito eficiente no uso da CPU.
Quando a consulta contém várias dessas funções, usar uniq é quase tão rápido quanto usar outras funções de agregação.
Sintaxe
uniq(x[, ...])Argumentos
x— A função aceita um número variável de parâmetros.Tuple(T)ouArray(T)ouDateouDateTimeouStringou(U)Int*ouFloat*ouDecimal
Valor retornado
Retorna um número do tipo UInt64 que representa o número aproximado de valores distintos. UInt64
Exemplos
Exemplo de uso
CREATE TABLE example_table (
id UInt32,
category String,
value Float64
) ENGINE = Memory;
INSERT INTO example_table VALUES
(1, 'A', 10.5),
(2, 'B', 20.3),
(3, 'A', 15.7),
(4, 'C', 8.9),
(5, 'B', 12.1),
(6, 'A', 18.4);
SELECT uniq(category) as unique_categories
FROM example_table;┌─unique_categories─┐
│ 3 │
└───────────────────┘Vários argumentos
SELECT uniq(category, value) as unique_combinations
FROM example_table;┌─unique_combinations─┐
│ 6 │
└─────────────────────┘Veja também