Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les fonctions d’agrégation ne sont pas autorisées dans GROUP BY, mais ont été trouvées dans <sqlExpr>.
Paramètres
- sqlExpr: expression contenant une fonction d’agrégation.
Explication
L’objectif de la clause GROUP BY est d’identifier l’ensemble de groupes distincts.
Chaque groupe de lignes est ensuite réduit en une seule ligne à l’aide de fonctions d’agrégation dans la liste SELECT.
Enfin, vous pouvez filtrer les lignes groupées à l’aide de la clause HAVING.
La sqlExpr se trouve dans la clause GROUP BY au lieu de la liste SELECT ou de la clause HAVING.
Atténuation
L’atténuation de l’erreur dépend de la cause :
Avez-vous spécifié la fonction correcte ?
Remplacez
sqlExprpar une fonction appropriée qui n’est pas une fonction d’agrégation.Avez-vous l’intention d’agréger l’expression ?
Supprimez l’expression du
GROUP BYet ajoutez-la à la listeSELECT.Avez-vous l’intention de filtrer sur l’expression agrégée ?
Supprimez l’expression de la clause
GROUP BYet ajoutez-la à l’aide d’un opérateurBOOLEANà la clauseHAVING.
Exemples
-- An aggregation in the GROUP BY clause
> SELECT a FROM VALUES(1, 2), (1, 3) AS T(a, b) GROUP BY a, sum(b);
[GROUP_BY_AGGREGATE] Aggregate functions are not allowed in GROUP BY, but found sum(T.b).; line 1 pos 58;
-- Move the expression to the SELECT list
> SELECT a, sum(b) FROM VALUES(1, 2), (1, 3) AS T(a, b) GROUP BY a;
1 5
-- An aggregation in the GROUP BY clause
> SELECT a, sum(b) FROM VALUES(1, 2), (1, 3), (2, 1) AS T(a, b) GROUP BY a, sum(b) > 1;
[GROUP_BY_AGGREGATE] Aggregate functions are not allowed in GROUP BY, but found (sum(T.b) > CAST(1 AS BIGINT)).; line 1 pos 74;
-- Move the expression to the HAVING clause
> SELECT a, sum(b) FROM VALUES(1, 2), (1, 3), (2, 1) AS T(a, b) GROUP BY a HAVING sum(b) > 1;
1 5