Passer au contenu principal
Les fonctions d’agrégation se comportent de manière classique, comme s’y attendent les experts en bases de données. ClickHouse prend également en charge :

Traitement des NULL

Lors de l’agrégation, tous les arguments NULL sont ignorés. Si l’agrégation comporte plusieurs arguments, elle ignore toute ligne dans laquelle au moins l’un d’eux est NULL. Il existe une exception à cette règle : les fonctions first_value, last_value et leurs alias (any et anyLast, respectivement), lorsqu’elles sont suivies du modifier RESPECT NULLS. Par exemple, FIRST_VALUE(b) RESPECT NULLS. Exemples : Considérez la table suivante :
Supposons que vous deviez faire la somme des valeurs de la colonne y :
Vous pouvez maintenant utiliser la fonction groupArray pour créer un tableau à partir de la colonne y :
groupArray n’inclut pas NULL dans le tableau résultant. Vous pouvez utiliser COALESCE pour remplacer NULL par une valeur adaptée à votre cas d’usage. Par exemple : avg(COALESCE(column, 0)) utilisera la valeur de la colonne dans l’agrégation, ou zéro si elle vaut NULL :
Vous pouvez également utiliser Tuple pour contourner le comportement d’omission de NULL. Un Tuple qui contient uniquement une valeur NULL n’est pas NULL ; les fonctions d’agrégation n’ignoreront donc pas cette ligne à cause de cette valeur NULL.
Notez que les agrégations sont ignorées lorsque les colonnes sont utilisées comme arguments d’une fonction d’agrégation. Par exemple, count sans paramètres (count()) ou avec des paramètres constants (count(1)) comptera toutes les lignes du bloc (indépendamment de la valeur de la colonne du GROUP BY, puisqu’elle n’est pas un argument), tandis que count(column) ne renverra que le nombre de lignes pour lesquelles column n’est pas NULL.
Et voici un exemple de first_value avec RESPECT NULLS, où l’on peut voir que les valeurs d’entrée NULL sont prises en compte et que la première valeur lue sera renvoyée, qu’elle soit NULL ou non :
Dernière modification le 2 juillet 2026