본문 바로가기

Database

[ oracle ] 순위 함수 - ROW_NUMBER(), RANK(), DENSE_RANK()

정렬한 이후 ROWNUM 으로 일련번호를 만들고 싶다.

그러나 ORDER BY를 사용하게되면 ROWNUM은 WHERE절에서 생성이 된다.

따라서 여기저기 얽히게 된다.

따라서, 정렬한 이후 순위를 매기고 싶을 때 아래 세가지 방법을 사용할 수 있다.

 

 

1. ROW_NUMBER() 

- 동일한 값이라도 고유한 순위를 부여한다.

 

 

 

2. RANK() 

- 동일한 값에 대해서는 동일한 순서를 부여함. 동일한 순위 하나의 건수로 취급하지 않음.

 

 

 

3. DENSE_RANK()

- DENSE_RANK 함수는 동일한 순위를 하나의 건수로 취급함

 

 

 

* ROW_NUMBER(), RANK(), DENSE_RANK() 사용시 그룹별로 순위를 매길 수 있다.

OVER절 뒤 PARTION BY 사용