Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Agregační funkce nejsou povoleny v GROUP BY, ale nalezeny <sqlExpr>.
Parametry
- sqlExpr: Výraz obsahující agregační funkci.
Vysvětlení
Účelem klauzule GROUP BY je identifikovat sadu jedinečných skupin.
Každá skupina řádků se pak zkomprimuje do jednoho řádku pomocí agregačních funkcí v seznamu SELECT.
Nakonec můžete seskupené řádky filtrovat pomocí klauzule HAVING.
sqlExpr se nachází v klauzuli GROUP BY namísto SELECT seznamu nebo HAVING klauzule.
Zmírnění
Zmírnění chyby závisí na příčině:
Zadali jste správnou funkci?
Nahraďte
sqlExprodpovídající funkcí, která není agregační funkcí.Chcete výraz agregovat?
Odeberte výraz z
GROUP BYa přidejte ho do seznamuSELECT.Chcete filtrovat agregovaný výraz?
Odeberte výraz z klauzule
GROUP BYa přidejte ho pomocí operátoruBOOLEANdo klauzuleHAVING.
Příklady
-- 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