지점별 신계약 건수 순위로 다음 [결과]를 얻으려 한다. ( ㉠ )에 … | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 10회
지점별 신계약 건수 순위로 다음 [결과]를 얻으려 한다. ( ㉠ )에 들어갈 함수로 옳은 것은?

[실적]

설계사지점건수
윤아강남9
도현강남9
시우강남8
하린강남7
지안판교6
서준판교5
예린판교5
SELECT 지점, 설계사, 건수
  FROM (SELECT 지점, 설계사, 건수,
               ( ㉠ ) OVER (PARTITION BY 지점
                            ORDER BY 건수 DESC) AS 순위
          FROM 실적) T
 WHERE 순위 <= 2
 ORDER BY 지점, 건수 DESC, 설계사;

[결과]

지점설계사건수
강남도현9
강남윤아9
강남시우8
판교지안6
판교서준5
판교예린5
1
NTILE(2)
2
RANK()
3
ROW_NUMBER()
4
DENSE_RANK()
해설

[결과]에서 강남은 9건 두 명 뒤의 8건까지, 판교는 6건과 동점인 5건 두 명이 모두 나오므로 동점 뒤 순위를 건너뛰지 않는 DENSE_RANK() 가 맞다.

강남 순위는 DENSE_RANK 로 1·1·2·3, RANK 로 1·1·3·4 가 되어 동점 뒤 순위 처리에서 결과가 갈린다.

  • RANK() 는 강남 8건이 3위가 되어 강남에서 9건 두 명만 남는다.
  • ROW_NUMBER() 는 동점에도 고유 번호를 주어 판교 5건 중 한 명이 빠진다.
  • NTILE(2) 는 행을 두 묶음으로 나눌 뿐이라 모든 행이 2 이하가 되어 하린까지 나온다.

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

이어서 풀어보기

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