반응형
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 함수를 가장 많이 사용합니다.데이터를 대량으로 입력할 때 유일한 키 값을 추출할 때 사용하게 됩니다.
추가적인 궁금증은 댓글로 달아주세요!! :)
반응형
'SQL' 카테고리의 다른 글
SQLD 47회 기출문제 모음 코멘터리 (0) | 2022.12.18 |
---|---|
SQLD 합격 방법, 공부 방법 (0) | 2022.12.04 |
SQLD 45회 기출문제 풀이 ( SUBSTR ) (0) | 2022.11.30 |
2023년 SQLD, SQLP, ADP, ADSP, DAP, DAsP 시험 일정 (0) | 2022.11.29 |
[SQLD 강의] 숫자 함수 차이 ( abs, round, ceil, floor, trunc ) (0) | 2022.11.29 |
댓글