학습용 기출·복원자료 분류 확인SQLD · 2024년 54회 SQL 기본 및 활용 · 36번
회원별 총주문금액이 가장 큰 회원 한 명을 구하는 구형 Oracle SQL 구조는?
1
같은 쿼리 블록에서 ROWNUM=1을 적용한 뒤 ORDER BY한다.
오답 이유ROWNUM이 먼저 임의의 한 행을 고른 뒤 정렬되므로 전체 최대 총액을 보장하지 못한다. 따라서 1번 보기 ‘같은 쿼리 블록에서 ROWNUM=1을 적용한 뒤 ORDER BY한다.’의 적용 여부를 문제 조건과 대조해야 한다.
2
총액을 내림차순 정렬한 인라인 뷰 바깥에서 ROWNUM = 1을 적용한다.
정답 근거ROWNUM 제한보다 먼저 전체 결과를 정렬하려면 ORDER BY를 인라인 뷰 안에서 수행해야 한다. 바깥 쿼리의 ROWNUM=1이 정렬된 첫 행만 선택한다. 따라서 2번 보기 ‘총액을 내림차순 정렬한 인라인 뷰 바깥에서 ROWNUM = 1을 적용한다.’의 적용 여부를 문제 조건과 대조해야 한다.
3
ORDER BY 없이 ROWNUM=1만 적용한다.
오답 이유정렬 기준이 없으면 어떤 회원이 첫 행이 될지 보장되지 않는다. 따라서 3번 보기 ‘ORDER BY 없이 ROWNUM=1만 적용한다.’의 적용 여부를 문제 조건과 대조해야 한다.
4
ROWNUM=2로 두 번째 행을 선택한다.
오답 이유최댓값 한 건은 정렬 결과의 첫 행이므로 ROWNUM=2가 아니다. 따라서 4번 보기 ‘ROWNUM=2로 두 번째 행을 선택한다.’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 2번
핵심 판단은 2번 ‘총액을 내림차순 정렬한 인라인 뷰 바깥에서 ROWNUM = 1을 적용한다.’입니다. ROWNUM 제한보다 먼저 전체 결과를 정렬하려면 ORDER BY를 인라인 뷰 안에서 수행해야 한다. 바깥 쿼리의 ROWNUM=1이 정렬된 첫 행만 선택한다.