ROW_NUMBER
ROW_NUMBER는 모든 행에 유일값으로 순위를 부여한다. 조건에 따라 같은 순위에 놓일 수 있는 경우에는 정렬 순서에 따라 순위를 부여한다. 기본적인 사용 방법은 다음과 같다. PARTITION BY는 그룹별로 묶어주는 역할을 수행하며, ORDER BY로 순서도 부여할 수 있다. (물론 이 기능들을 사용하지 않을 수 있다.)
ROW_NUMBER() OVER (PARTITION BY 열 ORDER BY 열)
RANK
RANK는 ROW_NUMBER와 유사하지만, 같은 순위를 같은 값을 부여한다. 그리고 그 다음 순위에 대해서는 같은 순위의 개수만큼 더해서 순위를 매긴다. 예를 들면, 공동 3순위가 3개가 존재하면 그 다음 순위는 6순위가 부여된다. 기본적인 사용 방법은 다음과 같다.
RANK() OVER (PARTITION BY 열 ORDER BY 열)
DENSE_RANK
RANK에서 같은 순위에 대해서 개수를 고려했지만, 개수를 고려하고 싶지 않다면 DENSE_RANK를 사용하면 된다. 기본적인 사용 방법은 다음과 같다.
DENSE_RANK() OVER (PARTITION BY 열 ORDER BY 열)
NTILE
지정한 값만큼 데이터 행을 그룹화해 그룹별 순위를 매기고 싶다면 NTILE을 사용한다. 기본적인 사용 방법은 다음과 같다.
NTILE(정수 숫자) OVER (PARTITION BY 열 ORDER BY 열)
PERCENT_RANK
앞서 순위 계산하는 여러 방법(ROW_NUMBER, RANK 등)을 공유하였다. 여기서는 상대 순위를 계산하기 위해 PERCENT_RANK를 사용하였다. 기본적인 사용법은 다음과 같다.
PERCENT_RANK() OVER (PARTITION BY 열 ORDER BY 열)
참고자료
- 강성욱. Do it! SQL 입문. 이지스 퍼블리싱.
'SQL' 카테고리의 다른 글
SQL 집계함수 응용 사례 정리하기 | 고유값 집계, 그룹별 집계, 부분합 (0) | 2025.01.17 |
---|---|
SQL 기본 날짜 함수 정리하기 | 날짜 정보 가져오기, 날짜 연산, 날짜 시간 형식 지정 (0) | 2025.01.16 |
SQL 기본 문자열 함수 정리하기 (0) | 2025.01.15 |
SQL 여러 쿼리 연결하기 | UNION, INTERSECT, EXCEPT (0) | 2025.01.12 |
공통 테이블식 쿼리(CTE) 기본 내용 정리하기 | 일반 & 재귀 CTE (0) | 2025.01.11 |