Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

count

count

導入バージョン: v1.1.0

行数、または NULL 以外の値の数を数えます。

ClickHouse は count で次の構文をサポートしています。

  • count(expr) または COUNT(DISTINCT expr)
  • count() または COUNT(*)count() 構文は ClickHouse 固有です。

詳細

ClickHouse は COUNT(DISTINCT ...) 構文をサポートしています。 この構文の動作は、count_distinct_implementation 設定によって決まります。 この設定では、処理の実行に使用する uniq* 関数を指定します。 デフォルトは uniqExact 関数です。

SELECT count() FROM table クエリは、デフォルトで MergeTree のメタデータを使って最適化されます。 行レベルセキュリティを使用する必要がある場合は、optimize_trivial_count_query 設定でこの最適化を無効にしてください。

一方、SELECT count(nullable_column) FROM table クエリは、optimize_functions_to_subcolumns 設定を有効にすることで最適化できます。 optimize_functions_to_subcolumns = 1 の場合、この関数はカラム全体のカラムデータを読み取って処理する代わりに、null サブカラムのみを読み取ります。 クエリ SELECT count(n) FROM tableSELECT sum(NOT n.null) FROM table に変換されます。

構文

count([expr])

引数

  • expr — 任意。式。この関数は、この式が NULL 以外の値を返した回数をカウントします。

戻り値

パラメータなしで関数を呼び出した場合は行数を返し、それ以外の場合は、渡された式が NULL 以外の値を返した回数を返します。UInt64

基本的な行数カウント

CREATE TABLE t (num UInt8) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (2), (3);

SELECT count() FROM t
┌─count()─┐
│       5 │
└─────────┘

COUNT(DISTINCT)の例

-- This example shows that `count(DISTINCT num)` is performed by the `uniqExact` function according to the `count_distinct_implementation` setting value.
SELECT name, value FROM system.settings WHERE name = 'count_distinct_implementation';
SELECT count(DISTINCT num) FROM t
┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
┌─countDistinct(num)─┐
│                  3 │
└────────────────────┘
Navigation