foutklasse GROUP_BY_AGGREGATE
Aggregatiefuncties zijn niet toegestaan in GROUP BY, maar er werden <sqlExpr>
gevonden.
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 in éé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.
Verzachting
De beperking van de fout is afhankelijk van de oorzaak:
Hebt u de juiste functie opgegeven?
Vervang
sqlExpr
door een geschikte functie die geen statistische functie is.Wilt u de expressie aggregeren?
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