GROUP_BY_AGGREGATE エラー クラス
GROUP BY では集計関数は使用できませんが、<sqlExpr>
が検出されました。
パラメーター
- sqlExpr: 集計関数を含む式。
説明
GROUP BY
句の目的は、個別のグループのセットを識別することです。
その後、SELECT
リストで集計関数を使用して、行の各グループが 1 つの行に集約されます。
最後に、HAVING
句を使用してグループ化された行をフィルター処理できます。
sqlExpr
は、SELECT
リストまたはHAVING
句ではなく、GROUP BY
句にあります。
対応策
エラーの対応策はエラーの原因によって異なります。
正しい関数を指定しましたか?
sqlExpr
を集約関数でない適切な関数に置き換えます。式を集計しますか?
式を
GROUP BY
から削除し、SELECT
リストに追加します。集計式をフィルター処理しますか?
GROUP BY
句から式を削除し、BOOLEAN
演算子を使用してHAVING
句に追加します。
例
-- 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