ORA-00937: 단일 그룹의 그룹 함수가 아닙니다 해결하기 (ORA-00937: not a single-group group function)

ORA-00937: 단일 그룹의 그룹 함수가 아닙니다 오류는 SQL에서 그룹 함수를 사용하였지만, 그룹이 아닌 컬럼이 SELECT 문에 포함되어 있을 때 발생하는 오류입니다. 이 오류는 GROUP BY 절이나 HAVING 절이 없는 상태에서 집계 함수와 그룹화 하지 않은 컬럼을 함께 사용하는 경우에 발생하는 가능성이 높습니다.

ORA-00937: 단일 그룹의 그룹 함수가 아닙니다

아래는 이 오류가 발생할 수 있는 간단한 예제입니다.

SELECT CASE JOB WHEN 'MANAGER' THEN SUM (SAL) ELSE 0 END FROM EMP;

ERROR at line 1:
ORA-00937: not a single-group group function

위의 예제에서는 JOB 컬럼이 그룹화되지 않은 상태에서 SUM(SAL)과 함께 사용되었습니다. 이로 인해 ORA-00937 오류가 발생한답니다.

ORA-00937: 단일 그룹의 그룹 함수가 아닙니다 해결하기

집계 함수에서 그룹 하기 이전 컬럼에 대해 해결하는 방법

SELECT SUM (CASE JOB WHEN 'MANAGER' THEN SAL ELSE 0 END) FROM EMP;

집계 함수 내에서 조건을 설정하는 방법입니다. 의외로 이 부분을 모르는 분이 많이 계신데, 이 기회에 하나 알아가세요~

인라인 뷰를 통해 해당 컬럼을 미리 조회하는 방법

SELECT SUM (SAL_OF_MANAGER), SUM (SAL_OF_ANALYST)
  FROM (SELECT CASE JOB WHEN 'MANAGER' THEN SAL ELSE 0 END SAL_OF_MANAGER,
               CASE JOB WHEN 'ANALYST' THEN SAL ELSE 0 END SAL_OF_ANALYST,
               EMP.*
          FROM EMP)

위의 예시에서는 인라인 뷰 내에서 먼저 집계에 사용하려는 컬럼을 조회해 보았습니다.

ORA-00937: 단일 그룹의 그룹 함수가 아닙니다 오류를 해결하려면, 집계 함수를 사용하려는 컬럼에 대해 GROUP BY 절에서 열거한 컬럼 조합이 맞는지 확인을 해주십시오.

댓글