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

uniq

Добавленный в: v1.1.0 Вычисляет приблизительное количество различных значений аргумента. Функция использует алгоритм адаптивного сэмплирования. Для хранения состояния вычислений функция использует выборку хеш-значений элементов размером до 65536. Этот алгоритм очень точен и при этом очень эффективен по нагрузке на CPU. Если запрос содержит несколько таких функций, uniq работает почти так же быстро, как и другие агрегатные функции.
Эта функция вычисляет хеш для всех параметров агрегирования, а затем использует его в вычислениях. Она использует алгоритм адаптивного сэмплирования. Для хранения состояния вычислений функция использует выборку хеш-значений элементов размером до 65536. Этот алгоритм очень точен и при этом очень эффективен по нагрузке на CPU. Если запрос содержит несколько таких функций, uniq работает почти так же быстро, как и другие агрегатные функции.
Мы рекомендуем использовать эту функцию вместо других вариантов почти во всех случаях.
Синтаксис
uniq(x[, ...])
Аргументы Возвращаемое значение Возвращает число типа UInt64, представляющее приблизительное количество различных значений. UInt64 Примеры Пример использования
Query
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;
Response
┌─unique_categories─┐
│                 3 │
└───────────────────┘
Несколько аргументов
Query
SELECT uniq(category, value) as unique_combinations
FROM example_table;
Response
┌─unique_combinations─┐
│                   6 │
└─────────────────────┘
См. также
Последнее изменение 10 июня 2026 г.