기본적으로 ROWNUM 으로 시작을 한다.
<요약>
RANK() : 동일한 값이면 중복 순위를 부여, 다음 순위는 해당 갯수만큼 건너뛰고 반환
DENSE_RANK() : 동일한 값이면 중복 순위를 부여, 다음 순위는 중복 순위와 상관 없이 순차적으로 반환
ROW_NUMBER : 중복에 관계 없이 순차적으로 순위를 반환
ROW_NUMBER() PARTITION BY (COL1) ORDER BY (COL2)
파티션 별로 순위를 매기는 방법 : 부서별로 월급이 높은 순으로 출력을 하는 방법
RANK() OVER (PARTITION BY COL1 ORDER BY COL2)
중복된 SALARY인 경우 동일한 등수를 매기며 해당 갯수만큼 점프!
DENSE_RANK() OVER (PARTITION BY COL1 ORDER BY COL2)
중복된 SALARY인 경우 동일한 등수 점프 없음!
ROW_NUMBER() OVER ( ) AS ALIAS
RANK() OVER ( ) AS ALIAS
DENSE_RANK() OVER ( ) AS ALIAS
꼴이며, OVER 안에서 칼럼을 기준으로 정렬을 하면된다.
특정 부서별, 그룹별 지정을 주려면 PARTITION을 사용해야 한다.
정리하면,
RANK() OVER( ) 의 경우 중복된 값에는 동일한 순위를 부여하며 그 다음 순위는 해당 갯수 만큼 더한 후의 순위
DENSE_RANK() OVER( ) 의 경우 중복된 값에는 동일한 순위를 부여하고 그 다음 순위는 더할 필요 없음
ROW_NUMBER() OVER( ) 의 경우 그냥 순위 매겨 버림. 차례대로!!!!!
'데이터베이스' 카테고리의 다른 글
[SQL] Weather Observation Station 18 (0) | 2021.02.18 |
---|---|
[SQL] PIVOT (0) | 2021.02.16 |
[SQL] 1주차 숙제 (0) | 2021.02.05 |
[SQLP] 'DECODE' 의 모든 것 (0) | 2020.06.20 |
[SQLP] DML 실행 순서 (0) | 2020.06.20 |