정렬한 이후 ROWNUM 으로 일련번호를 만들고 싶다.
그러나 ORDER BY를 사용하게되면 ROWNUM은 WHERE절에서 생성이 된다.
따라서 여기저기 얽히게 된다.
따라서, 정렬한 이후 순위를 매기고 싶을 때 아래 세가지 방법을 사용할 수 있다.
1. ROW_NUMBER()
- 동일한 값이라도 고유한 순위를 부여한다.
2. RANK()
- 동일한 값에 대해서는 동일한 순서를 부여함. 동일한 순위 하나의 건수로 취급하지 않음.
3. DENSE_RANK()
- DENSE_RANK 함수는 동일한 순위를 하나의 건수로 취급함
* ROW_NUMBER(), RANK(), DENSE_RANK() 사용시 그룹별로 순위를 매길 수 있다.
OVER절 뒤 PARTION BY 사용
'Database' 카테고리의 다른 글
[ oracle ] 대량의 데이터 UPDATE 하기 (0) | 2025.02.07 |
---|---|
[ oracle ] where 절에서 (+)와 값을 비교 하는 경우 (0) | 2024.09.24 |