Passer au contenu principal

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.
Améliorer les performances de COUNT(DISTINCT expr)Si votre requête COUNT(DISTINCT expr) est lente, envisagez d’ajouter une clause GROUP BY, car cela améliore la parallélisation. Vous pouvez également utiliser une projection pour créer un index sur la colonne cible utilisée avec COUNT(DISTINCT target_col).
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
Query
SELECT count() FROM t
Response
┌─count()─┐
│       5 │
└─────────┘
Exemple de COUNT(DISTINCT)
Query
-- 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
Response
┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
┌─uniqExact(num)─┐
│              3 │
└────────────────┘
Dernière modification le 25 juin 2026