- les fonctions d’agrégation paramétriques, qui acceptent d’autres paramètres en plus des colonnes.
- les combinateurs, qui modifient le comportement des fonctions d’agrégation.
Traitement des NULL
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 :
y :
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 :
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.
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.
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 :