メインコンテンツへスキップ
メインコンテンツへスキップ

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

関連項目