Megosztás a következőn keresztül:


GROUP_BY_AGGREGATE hibaosztály

SQLSTATE: 42903

Az összesítő függvények nem engedélyezettek a GROUP BY-ban, de megtalálhatók.<sqlExpr>

Paraméterek

  • sqlExpr: Aggregátumfüggvényt tartalmazó kifejezés.

Magyarázat

A záradék célja az GROUP BY eltérő csoportok halmazának azonosítása. Ezután a lista összesítő függvényeinek SELECT használatával minden sorcsoport egyetlen sorba lesz összecsukva. Végül szűrheti a csoportosított sorokat a HAVING záradék használatával.

A sqlExpr a lista vagy HAVING záradék helyett a GROUP BYSELECT záradékban található.

Kezelés

A hiba elhárítása az októl függ:

  • A megfelelő függvényt adta meg?

    Cserélje le sqlExpr a elemet egy megfelelő függvényre, amely nem összesítő függvény.

  • Összesíteni kívánja a kifejezést?

    Távolítsa el a kifejezést a GROUP BY fájlból, és adja hozzá a SELECT listához.

  • Szűrni szeretne az összesített kifejezésre?

    Távolítsa el a kifejezést a GROUP BY záradékból, és adja hozzá egy BOOLEAN operátorral a HAVING záradékhoz.

Példák

-- 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