count
count
導入バージョン: v1.1
行数、または 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 table は SELECT sum(NOT n.null) FROM table に変換されます。
COUNT(DISTINCT expr) クエリが遅い場合は、並列化が改善されるため GROUP BY 句を追加することを検討してください。
また、COUNT(DISTINCT target_col) に使用される対象カラムに索引を作成するために、projection を使用することもできます。
構文
引数
expr— 省略可能。式です。この関数は、この式が null ではない値を返した回数をカウントします。Expression
戻り値
引数なしで呼び出された場合は行数を返し、引数が渡された場合は、渡された式が null ではない値を返した回数を返します。UInt64
例
基本的な行数のカウント
COUNT(DISTINCT) の使用例