집계 함수는 GROUP BY에서 허용되지 않지만 <sqlExpr>
에서 발견되었습니다.
매개 변수
- sqlExpr: 집계 함수를 포함하는 식입니다.
설명
GROUP BY
절의 목적은 고유 그룹 집합을 식별하는 것입니다.
그런 다음 각 행 그룹은 SELECT
목록에서 집계 함수를 사용하여 단일 행으로 축소됩니다.
마지막으로 HAVING
절을 사용하여 그룹화된 행을 필터링할 수 있습니다.
sqlExpr
GROUP BY
목록 또는 SELECT
절 대신 HAVING
절에 있습니다.
Mitigation
오류 완화는 원인에 따라 달라집니다.
올바른 함수를 지정했나요?
sqlExpr
집계 함수가 아닌 적절한 함수로 대체합니다.Do you intend to aggregate the expression?
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