[순위] ROW_NUMBER, RANK, DENSE_RANK

2022. 5. 18. 15:44MYSQL

우선적으로 ROW_NUMBER은 동일한 값에도 고유 순위를 부여하게 된다. 

RANK와 DENSE_RANK는 동일한 값이면 같은 순위를 부여하지만, 

DENSE_RANK는 동일한 순위가 여러개일 경우에도 순위가 이어지지만,

RANK는 동일한 순위가 여러개이면 순위를 건너뛰고 순위를 계산한다.

 

SELECT *, ROW_NUMBER()OVER(PARTITION BY COMPANY ORDER BY SALARY) AS 'RANK1'
		, DENSE_RANK()OVER(PARTITION BY COMPANY ORDER BY SALARY) AS 'RANK2'
        , RANK()OVER(PARTITION BY COMPANY ORDER BY SALARY) AS 'RANK3'
FROM #TMP
ORDER BY 1

 

NO NAME COMPANY SALARY RANK1 RANK2 RANK3
1 Tom A 3000 1 1 1
2 Gray A 5000 4 3 4
3 Jinny A 3500 2 2 2
4 Lily A 3500 3 2 2
5 Jim B 2900 1 1 1
6 Amy B 3400 2 2 2
7 Ren B 4000 5 4 5
8 Eric B 3500 4 3 4
9 John B 3400 3 2 2
10 Wong C 2800 1 1 1
11 Ben C 3400 2 2 2
12 Sally C 3700 3 3 3
13 Mickey C 4000 5 4 5
14 Wendy C 3700 4 3 3

 

'MYSQL' 카테고리의 다른 글

[형 변환] CAST, CONVERT  (0) 2022.05.18
[문자열 위치 찾기] PATINDEX, CHARINDEX  (0) 2022.05.18
[날짜] DATEPART, DATEDIFF  (0) 2022.05.18
[치환함수] REPLACE, ISNULL  (0) 2022.05.18
[INFORMATION_SCHEMA] 메타데이터 확인하기  (0) 2022.05.18