GROUP_BY_AGGREGATE foutklasse
Statistische functies zijn niet toegestaan in GROUP BY, maar gevonden <sqlExpr>
.
Parameters
- sqlExpr: Expressie met een statistische functie.
Uitleg
Het doel van de GROUP BY
component is om de set afzonderlijke groepen te identificeren.
Elke groep rijen wordt vervolgens samengevouwen tot één rij met behulp van statistische functies in de SELECT
lijst.
Ten slotte kunt u de gegroepeerde rijen filteren met behulp van de HAVING
-component.
De sqlExpr
bevindt zich in de GROUP BY
-component in plaats van de SELECT
lijst of HAVING
component.
Mitigatie
De beperking van de fout is afhankelijk van de oorzaak:
Hebt u de juiste functie opgegeven?
Vervang door
sqlExpr
een geschikte functie die geen statistische functie is.Bent u van plan de expressie samen te voegen?
Verwijder de expressie uit de
GROUP BY
en voeg deze toe aan deSELECT
lijst.Wilt u filteren op de geaggregeerde expressie?
Verwijder de expressie uit de
GROUP BY
component en voeg deze toe met behulp van eenBOOLEAN
operator aan deHAVING
-component.
Voorbeelden
-- 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