MSSQL

MSSQL 순위 함수 비교 RANK, DENSE_RANK, ROW_NUMBER

허니용 2024. 10. 24. 06:00
728x90
반응형

MSSQL 순위 함수 비교

 

아래 3개의 순위 함수에 대해 알아보고 비교해보았습니다.

  • MSSQL 순위 함수 비교
    1. RANK
    2. DENSE_RANK
    3. ROW_NUMBER

 

 

MSSQL 순위 함수 비교

RANK, DENSE_RANK, ROW_NUMBER 함수를 이해하기 위해서는 위의 출력 결과를 보시면 됩니다.

 

빨간색으로 표시한 CU에서 썬칩, 고래밥, 자갈치가 동일하게 40개씩 팔렸을 때 이 부분을 주의 깊게 봐야 하는데요.

 

  • RANK 함수 : 중복 값들에 대해서 동일 순위로 표시하고 중복 순위 다음 값은 중복 개수만큼 더한 순위로 출력하는 함수
  • DENSE_RANK 함수 : 중복 값들에 대해서 동일 순위로 표시하고 중복 순위 다음 값은 중복 값과 상관없이 순위 값을 출력하는 함수
  • ROW_NUMBER 함수 : 중복 값들에 대해서도 순차적인 순위를 표시하는 함수

 

아래는 SQL이니 참고하세요.

WITH T1 AS
(
	SELECT 'CU' AS MART	, '새우깡' AS SNACK	, 50  AS SELL	UNION ALL
	SELECT 'CU'			, '다이제'			, 80			UNION ALL
	SELECT 'CU'			, '자갈치'			, 40			UNION ALL
	SELECT 'CU'			, '고래밥'			, 40			UNION ALL
	SELECT 'CU'			, '썬칩'			, 40			UNION ALL
	SELECT 'CU'			, '허니버터칩'		, 20			UNION ALL
	SELECT 'CU'			, '구운감자'		    , 100			UNION ALL
	SELECT 'CU'			, '치토스'			, 60			
)
SELECT	
		  MART, SNACK, SELL
		, RANK()		OVER (ORDER BY SELL DESC) AS RANK_SELL
		, DENSE_RANK()	OVER (ORDER BY SELL DESC) AS DENSE_RANK_SELL
		, ROW_NUMBER()	OVER (ORDER BY SELL DESC) AS ROW_NUMBER_SELL
FROM	T1
728x90
반응형