Перейти к основному содержимому
Перейти к основному содержимому

uniq

uniq

Добавлена в: v1.1

Вычисляет приблизительное количество различных значений аргумента.

Функция использует адаптивный алгоритм выборки. Для хранения состояния вычислений функция использует выборку хеш-значений элементов размером до 65536. Этот алгоритм обладает высокой точностью и очень эффективен по использованию CPU. Когда запрос содержит несколько таких функций, использование uniq почти столь же быстро, как использование других агрегатных функций.

Подробности реализации

Эта функция вычисляет хеш для всех параметров в агрегатной функции, а затем использует его в вычислениях. Она использует адаптивный алгоритм выборки. Для хранения состояния вычислений функция использует выборку хеш-значений элементов размером до 65536. Этот алгоритм обладает высокой точностью и очень эффективен по использованию CPU. Когда запрос содержит несколько таких функций, использование uniq почти столь же быстро, как использование других агрегатных функций.

Совет

Мы рекомендуем использовать эту функцию вместо других вариантов практически во всех сценариях.

Синтаксис

uniq(x[, ...])

Аргументы

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

Возвращает целое беззнаковое число типа UInt64, представляющее приблизительное количество различных значений. UInt64

Примеры

Пример использования

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 │
└───────────────────┘

Несколько аргументов

SELECT uniq(category, value) as unique_combinations
FROM example_table;
┌─unique_combinations─┐
│                   6 │
└─────────────────────┘

См. также