본문 바로가기
Data Science/SQL

[SQL] 순위 함수 (RANK, DENSE_RANK, ROW_NUMBER, NTILE)

by 로떡 2022. 11. 12.

1. RANK

중복 값들에 대해 동일 순위로 표시하고, 중복 순위 다음 값에 대해서는 중복 개수만큼 떨어진 순위로 출력하도록 하는 함수

SELECT empNo, empName, salary,
	RANK() OVER (ORDER BY salary DESC) as RANK등수
FROM employee

 

2. DENSE_RANK

중복 값들에 대해서 동일 순위로 표시하고, 중복 순위 다음 값에 대해서는 중복 값 개수와 상관없이 순차적인 순위 값을 출력하도록 하는 함수

SELECT empNo, empName, salary,
	DENSE_RANK() OVER (ORDER BY salary DESC) as DENSE_RANK등수
FROM employee

 

3. ROW_NUMBER

중복 값들에 대해서도 순하적인 순위를 표시하도록 출력하는 함수

SELECT empNo, empName, salary,
	ROW_NUMBER() OVER (ORDER BY salary DESC) as ROW_NUMBER등수
FROM employee

 

4. NTILE

뒤에 함께 적어주는 숫자 만큼으로 등분을 하는 함수

SELECT empNo, empName, salary,
	NTILE(4) OVER (ORDER BY salary DESC) as NTILE등분
FROM employee

 

5. PARTITION BY *** 중요!!

특정 속성 별로 구분을 하고자 할때 PARTITION BY절을 사용

SELECT empName, job, salary,
	RANK() OVER (PARTITION BY job ORDER BY salary DESC) as RANK등수
FROM employee


다 인턴할 때 종종 사용하던 것이었는데 막상 마주하니까 생각이 잘 안났다..

rank() over (partition by ~ order by ~) 구문 절대 까먹지 않기!!!

 

참고 : https://doorbw.tistory.com/221 님

'Data Science > SQL' 카테고리의 다른 글

[SQL] CONCAT을 까먹다니.. 컬럼 데이터 합치는 방법  (0) 2022.10.15