다음 SQL 의 실행 결과로 옳은 것은?[예매]예매번호회원번호금액상태1… | [SQLD] SQL 개발자 기출유형 모의고사 9회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 9회
다음 SQL 의 실행 결과로 옳은 것은?

[예매]

예매번호회원번호금액상태
1715000완료
2712000취소
379000완료
4820000취소
5811000완료
6811000완료
798000완료
SELECT 회원번호, 예매번호, 금액
  FROM (SELECT 회원번호, 예매번호, 금액, 상태,
               ROW_NUMBER() OVER (PARTITION BY 회원번호
                                  ORDER BY 금액 DESC, 예매번호) AS RN
          FROM 예매) T
 WHERE RN <= 2
   AND 상태 = '완료'
 ORDER BY 회원번호, 예매번호;
1
회원번호예매번호금액
7115000
2
회원번호예매번호금액
7115000
8511000
978000
3
회원번호예매번호금액
7115000
8511000
8611000
978000
4
회원번호예매번호금액
7115000
739000
8511000
8611000
978000
해설

ROW_NUMBER 는 인라인 뷰 안에서 취소 건까지 포함해 회원별로 매겨지고, 상태 조건은 그 뒤 바깥 WHERE 에서 적용되므로 결과는 3행이다.

회원 7 은 1·2위가 예매 1·2 인데 2 가 취소라 1 만, 회원 8 은 1위 4 가 취소라 2위 5 만, 회원 9 는 7 만 남는다.

  • 5행 표는 취소 건을 먼저 거른 뒤 순번을 매긴 결과이다.
  • 회원 8 이 두 행인 표는 보조 정렬 예매번호를 무시하고 동점 11000 을 같은 순위로 본 결과이다.
  • 1행 표는 PARTITION BY 없이 전체 상위 2건만 본 결과이다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 9회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기