본문 바로가기
SQL

SQLD 기출문제 풀이 ( ROW_NUMBER, RANK, DENSE_RANK )

by SQL Master 2022. 11. 30.
반응형

SQL의 분석 함수 중에 순위를 보여주는 함수가 여러 개 있습니다.

각 함수의 차이를 알아보는 문제를 가져왔습니다.

 

문제

아래의 결과 값을 보고 ㄱ, ㄴ, ㄷ에 맞는 함수를 골라보세요.

( ROW_NUMBER, RANK, DENSE_RANK )

[TABLE_A]

COL1
1
2
4
4
5
[예문]
SELECT (ㄱ) OVER (ORDER BY COL1) AA
     , (ㄴ) OVER (ORDER BY COL1) BB
     , (ㄷ) OVER (ORDER BY COL1) CC
  FROM TABLE_1

[결과]

AA BB CC
1 1 1
2 2 2
3 3 3
3 4 3
4 5 5

 

 


 

문제풀이

  • ROW_NUMBER는 유일한 순위를 정합니다. 동일한 값일 경우 랜덤으로 순위를 정합니다.
  • RANK의 경우 동일한 순위에 대해서 같은 순위를 주고, 같은 순위만큼 건너뛰고 다음 순위를 정합니다
  • DENSE_RANK의 경우 RANK와 동일하지만, 같은 순위를 건너뛰지 않고 바로 다음 순위로 정합니다.
SELECT (ㄱ) OVER (ORDER BY COL1) AA
     , (ㄴ) OVER (ORDER BY COL1) BB
     , (ㄷ) OVER (ORDER BY COL1) CC
  FROM TABLE_1
  
  예문
  COL1
  1
  2
  4
  4
  5
  
  4가 동일한 순위를 가지고 있습니다.
  
  ROW_NUMBER() 의 경우 COL1의 오름차순(ORDER BY COL1) 기준으로 중복값 없이 나타냅니다.
  RANK의 경우 4의 동일한 값을 3순위로 결정하고 그 다음 순위를 5로 나타냅니다.
  DENSE_RANK는 4일 동일한 값을 3순위로 결정하고 그 다음 순위를 4로 나타냅니다.

 

 

 

분석함수의 순위 함수인 ROW_NUMBER, RANK, DENSE_RANK에 대해서 알아봤습니다.현업에서는 주로 ROW_NUMBER 함수를 가장 많이 사용합니다.데이터를 대량으로 입력할 때 유일한 키 값을 추출할 때 사용하게 됩니다.

 

추가적인 궁금증은 댓글로 달아주세요!! :)

 

반응형

댓글