ERROR] ORA-00937: not a single-group group function

summer·2024년 1월 5일
post-thumbnail

ORA-00937: not a single-group group function
오류에 대하여

SELECT DECODE(SUBSTR(EMP_NO, 8, 1),'1','남','2','여'), COUNT(*)
FROM EMPLOYEE;

해당 쿼리를 실행하니 오류가 발생한다
우리의 친구 파파고를 실행하여 해석하면 이렇게 나온다.

ORA-00937: not a single-group group function
ORA-00937: 단일 그룹 함수가 아님

해당 쿼리는 'DECODE'와 'COUNT(*)'를 사용해서 성별에 따른 직원수를 세려는 식으로 보인다.

주민등록번호에서 8번째자리가 1일때는 남자 , 2일때는 여자를 조회해서 남/여 직원수를 알아보려고 하는것 같다.

ORA-00937 에러가 발생하는 이유는
그룹함수를 사용했는데 GROUP BY절을 사용하지 않아 발생한 에러다.
COUNT(*)는 SUM(), AVG()와 더불어 그룹으로 묶어서 처리해야하는 함수다.

⚡해결방법⚡

GROUP BY절 제시

⚡ GROUP BY절 제시

SELECT DECODE(SUBSTR(EMP_NO, 8, 1), '1', '남', '2', '여') AS GENDER, COUNT(*)
FROM EMPLOYEE
GROUP BY DECODE(SUBSTR(EMP_NO, 8, 1), '1', '남', '2', '여');

GROUP BY 절을 제시해서
EMP_NO(주민등록번호) 8번째 자리가 '1'일때는 '남', '2'일때는 '여'자를 반환하고 그룹화된 결과를 바탕으로
COUNT(*)를 통해 각 성별의 직원수를 반환한다

정상적으로 여/남 합계가 반환된것을 볼수 있다.

profile
내가 모를수도 떠올리지 못했을수도 내가 무지했을수도

0개의 댓글