GROUP_BY_AGGREGATE 오류 클래스
집계 함수는 GROUP BY에서 허용되지 않지만 을 찾 <sqlExpr>
습니다.
매개 변수
- sqlExpr: 집계 함수를 포함하는 식입니다.
설명
절의 GROUP BY
목적은 고유 그룹 집합을 식별하는 것입니다.
그런 다음 각 행 그룹은 목록의 집계 함수를 사용하여 단일 행으로 축소됩니다 SELECT
.
마지막으로 절을 사용하여 그룹화된 행을 필터링할 HAVING
수 있습니다.
는 sqlExpr
목록 또는 HAVING
절 대신 절에 SELECT
있습니다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