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)ouCOUNT(DISTINCT expr).count()ouCOUNT(*). La syntaxecount()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 │
└────────────────────┘