본 콘텐츠는 국가기술자격증의 여러 문제들 중 해설이 필요한 정보를 담은 게시물로써 본 문제를 출제한 출제자의 의도와 관련 기술 정보를 알아갈 수 있도록 만든 내용입니다. 응시자분들의 많은 이용바랍니다.
문제
데이터베이스의 EMP 테이블에서 부서별로 급여의 평균을 구하되 평균이 20000 이상인 부서만 조회하는 SQL 명령으로 옳은 것은? (단, 부서 : DEPTNO, 급여 : SALARY이다.)
① SELECT CEPTNO, AVG(SALARY) FROM EMP GROUP BY DEPTNO HAVING AVG(SALARY) >= 20000; |
해설
옳은 SQL 명령은 다음과 같습니다.
① SELECT DEPTNO, AVG(SALARY) FROM EMP GROUP BY DEPTNO HAVING AVG(SALARY) >= 20000;
그 이유는 다음과 같습니다.
GROUP BY를 사용하여 부서별로 그룹화합니다.
AVG 함수를 사용하여 급여의 평균을 구합니다.
HAVING 절을 사용하여 평균이 20000 이상인 부서만 조회합니다.
따라서 ①번이 옳은 SQL 명령입니다.
②번은 WHERE 절에서 AVG 함수를 사용하는데, 이는 잘못된 문법입니다. AVG 함수는 그룹 함수이므로 WHERE 절에서 사용할 수 없습니다.
③번은 HAVING 절을 사용하지 않아서 평균이 20000 이상인 부서만 조회할 수 없습니다.
④번은 HAVING 절을 사용하지만 SELECT 절에 DEPTNO를 포함시키지 않았으므로, 부서별 평균 급여를 확인할 수 없습니다.