다음 SQL 의 실행 결과로 옳은 것은?[실적]사번지점매출1강남5002… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지

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

[실적]

사번지점매출
1강남500
2강남700
3강남500
4강남300
5판교400
6판교900
7판교650
SELECT 지점, 사번, 매출
  FROM (SELECT 지점, 사번, 매출,
               ROW_NUMBER() OVER (PARTITION BY 지점
                                  ORDER BY 매출 DESC, 사번) AS RN
          FROM 실적) T
 WHERE RN <= 2
 ORDER BY 지점, RN;
1
지점사번매출
강남2700
판교6900
2
지점사번매출
강남2700
강남1500
강남3500
판교6900
판교7650
3
지점사번매출
강남4300
강남1500
판교5400
판교7650
4
지점사번매출
강남2700
강남1500
판교6900
판교7650
해설

ROW_NUMBER는 동점이어도 1, 2, 3처럼 고유 순번을 주므로 지점별로 정확히 2행씩, 강남 사번 2·1과 판교 사번 6·7이 나온다.

강남의 500 동점 두 명은 ORDER BY의 두 번째 기준인 사번 순으로 사번 1이 2위, 사번 3이 3위가 되어 사번 3은 빠진다.

  • 강남 사번 3까지 나온 표는 동점을 같은 순위로 주는 RANK를 쓴 경우다.
  • 매출이 낮은 사원이 나온 표는 오름차순으로 정렬한 경우다.
  • 2행뿐인 표는 PARTITION BY 없이 전체 상위 2명을 뽑은 경우다.

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

이어서 풀어보기

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