학습용 기출·복원자료 분류 확인SQLD · 2023년 51회 SQL 기본 및 활용 · 36번
구형 Oracle에서 매출 내림차순 상위 2건을 구하는 SQL 구조는?
1
인라인 뷰에서 ORDER BY한 뒤 바깥에서 ROWNUM<=2를 적용한다.
정답 근거전체 매출을 먼저 정렬하고 바깥 쿼리가 첫 두 행을 제한해야 한다. 같은 쿼리 블록에서 ROWNUM을 먼저 적용하면 전체 상위 2건이 보장되지 않는다. 따라서 1번 보기 ‘인라인 뷰에서 ORDER BY한 뒤 바깥에서 ROWNUM<=2를 적용한다.’의 적용 여부를 문제 조건과 대조해야 한다.
2
ROWNUM<=2를 먼저 적용한 뒤 같은 블록에서 ORDER BY한다.
오답 이유‘ROWNUM<=2를 먼저 적용한 뒤 같은 블록에서 ORDER BY한다.’ 구문은 ‘인라인 뷰에서 ORDER BY한 뒤 바깥에서 ROWNUM<=2를 적용한다.’과 실행 결과나 적용 조건이 다르다. 전체 매출을 먼저 정렬하고 바깥 쿼리가 첫 두 행을 제한해야 한다. 같은 쿼리 블록에서 ROWNUM을 먼저 적용하면 전체 상위 2건이 보장되지 않는다. 따라서 2번 보기 ‘ROWNUM<=2를 먼저 적용한 뒤 같은 블록에서 ORDER BY한다.’의 적용 여부를 문제 조건과 대조해야 한다.
3
ORDER BY 없이 ROWNUM=2만 사용한다.
오답 이유상위 기준도 없고 ROWNUM=2 단독 조건도 일반적으로 행을 얻지 못한다. 따라서 3번 보기 ‘ORDER BY 없이 ROWNUM=2만 사용한다.’의 적용 여부를 문제 조건과 대조해야 한다.
4
HAVING ROWNUM<=2를 사용한다.
오답 이유HAVING은 그룹 필터 절이며 Top-N 제한 위치가 아니다. 따라서 4번 보기 ‘HAVING ROWNUM<=2를 사용한다.’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 1번
핵심 판단은 1번 ‘인라인 뷰에서 ORDER BY한 뒤 바깥에서 ROWNUM<=2를 적용한다.’입니다. 전체 매출을 먼저 정렬하고 바깥 쿼리가 첫 두 행을 제한해야 한다. 같은 쿼리 블록에서 ROWNUM을 먼저 적용하면 전체 상위 2건이 보장되지 않는다.