跳转到主要内容

uniq

Introduced in: v1.1.0 计算参数中不同值的近似个数。 该函数使用自适应采样算法。在计算状态中,函数会使用最多 65536 个元素哈希值的样本。该算法精度很高,且 CPU 效率也很高。当查询中包含多个此类函数时,使用 uniq 的速度几乎与使用其他聚合函数一样快。
该函数会先对聚合中的所有参数计算哈希值,再将其用于计算。 它使用自适应采样算法。 在计算状态中,函数会使用最多 65536 个元素哈希值的样本。 该算法精度很高,且 CPU 效率也很高。 当查询中包含多个此类函数时,使用 uniq 的速度几乎与使用其他聚合函数一样快。
在几乎所有场景下,我们都建议优先使用此函数而非其他变体。
Syntax
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 │
└─────────────────────┘
另请参阅
最后修改于 2026年6月10日