Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

count

count

Introduit dans : v1.1.0

Compte le nombre de lignes ou de valeurs non NULL.

ClickHouse prend en charge les syntaxes suivantes pour count :

  • count(expr) ou COUNT(DISTINCT expr).
  • count() ou COUNT(*). La syntaxe count() est spécifique à ClickHouse.

Détails

ClickHouse prend en charge la syntaxe COUNT(DISTINCT ...). Le comportement de cette construction dépend du paramètre count_distinct_implementation. Il détermine quelle fonction de la famille uniq* est utilisée pour effectuer l'opération. La valeur par défaut est la fonction uniqExact.

La requête SELECT count() FROM table est optimisée par défaut à l'aide des métadonnées de MergeTree. Si vous devez utiliser la sécurité au niveau des lignes, désactivez cette optimisation à l'aide du paramètre optimize_trivial_count_query.

Cependant, la requête SELECT count(nullable_column) FROM table peut être optimisée en activant le paramètre optimize_functions_to_subcolumns. Avec optimize_functions_to_subcolumns = 1, la fonction lit uniquement la sous-colonne null au lieu de lire et traiter l'ensemble des données de la colonne. La requête SELECT count(n) FROM table est transformée en SELECT sum(NOT n.null) FROM table.

Syntaxe

count([expr])

Arguments

  • expr — Facultatif. Une expression. La fonction compte le nombre de fois où cette expression a renvoyé une valeur non NULL. Expression

Valeur renvoyée

Renvoie le nombre de lignes si la fonction est appelée sans paramètres ; sinon, renvoie le nombre de fois où l'expression transmise a renvoyé une valeur non NULL. UInt64

Exemples

Comptage simple des lignes

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

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

Exemple de 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