본문 바로가기
SQL

[SQL] 데이터에 넘버링하기

by 펜네임 2020. 3. 12.

 1. ROW_NUMBER() 

일반적인 넘버링. 

기준 컬럼(ORDER BY 다음에 오는 컬럼)의 값이 같은 값이라도 다른 행이면 다른 넘버를 주므로

넘버링 시 중복되는 숫자가 없다.

 

RNUM 기준 컬럼명
1 1 바나나
2 2 사과
3 3 사과
4 4 딸기
SELECT ROW_NUMBER() OVER (ORDER BY 컬럼명1, 컬럼명2, ...) AS RNUM, *
  FROM 테이블명;

 

 

 

 2. RANK() 

기준 컬럼의 값이 겹칠 경우 같은 넘버를 주고,

겹치지 않으면 해당 행의 넘버를 줌.

 

예를 들어 같은 값이 두 개고 다음 레코드의 값이 다르면 이 레코드는 넘버 4.

 

RNUM 기준 컬럼명
1 1 바나나
2 2 사과
3 2 사과
4 4 딸기

 

SELECT RANK() OVER (ORDER BY 컬럼명) AS RNUM, *
  FROM 테이블명;

 

 

 

 3. DENSE_RANK() 

기준 컬럼의 값이 겹칠 경우 같은 넘버를 주고,

겹치지 않으면 그 다음 넘버를 줌.

 

예를 들어 같은 값이 두 개고 다음 레코드의 값이 다르면 이 레코드는 넘버 3.

 

RNUM 기준 컬럼명
1 1 바나나
2 2 사과
3 사과
4 3 딸기

 

마이플랫폼에서 suppress로 컬럼끼리 같은 값을 붙이고 싶을 때 사용.

이 때 없는 숫자가 있으면 안 되므로 RANK()가 아닌 DENSE_RANK()를 쓴다.

 

SELECT DENSE_RANK() OVER (ORDER BY 컬럼명2) AS RNUM, *
  FROM 테이블명;

 

댓글