학습용 기출·복원자료 분류 확인SQLD · 2023년 48회 SQL 기본 및 활용 · 14번
부서별 최고 연봉자만 조회하려 할 때 올바른 결과는?
DBMS: Oracle
SELECT 사원명
FROM (부서별 MAX(연봉) 분석 결과와 사원 테이블의 조인)
WHERE 최고연봉 = 연봉;
1
전체 사원 가운데 최고 연봉자 한 명만 남는다.
오답 이유PARTITION BY 부서ID가 있으므로 최고값은 전사 전체가 아니라 각 부서 안에서 계산된다. 따라서 1번 보기 ‘전체 사원 가운데 최고 연봉자 한 명만 남는다.’의 적용 여부를 문제 조건과 대조해야 한다.
2
부서별 최저 연봉자만 남는다.
오답 이유MAX 분석 함수는 최솟값을 구하지 않으므로 부서별 최저 연봉자를 선택하지 않는다. 따라서 2번 보기 ‘부서별 최저 연봉자만 남는다.’의 적용 여부를 문제 조건과 대조해야 한다.
3
각 부서의 최고 연봉과 같은 사원만 남는다.
정답 근거`MAX(연봉) OVER(PARTITION BY 부서ID)`는 각 부서 행마다 부서 최고 연봉을 계산한다. 현재 사원의 연봉이 그 값과 같은 행만 조건을 통과한다. 따라서 3번 보기 ‘각 부서의 최고 연봉과 같은 사원만 남는다.’의 적용 여부를 문제 조건과 대조해야 한다.
4
모든 사원이 연봉순으로만 정렬되어 남는다.
오답 이유최고연봉과 현재 연봉을 비교하는 필터가 있으므로 최고값이 아닌 사원은 결과에서 제외된다. 따라서 4번 보기 ‘모든 사원이 연봉순으로만 정렬되어 남는다.’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 3번
핵심 판단은 3번 ‘각 부서의 최고 연봉과 같은 사원만 남는다.’입니다. `MAX(연봉) OVER(PARTITION BY 부서ID)`는 각 부서 행마다 부서 최고 연봉을 계산한다. 현재 사원의 연봉이 그 값과 같은 행만 조건을 통과한다.