728x90
1) RANK
ORDER BY를 포함한 QUERY 문에서 특정 칼럼에 대한 순위를 구함.
- 특정 범위(PARTITION)와 전체 데이터에 대한 순위를 구할 수 있다.
- 동일한 값에 대해서는 동일한 순위를 부여한다.
[예제] JOB 별 SALARY 순서 구하기.
SELECT JOB, ENAME, SAL,
RANK() OVER (PARTITION BY JOB ORDER BY SAL DESC) JOB_RANK
FROM EMP;
[실행 결과]

2) DENSE_RANK
RANK 함수와 유사.
- 동일한 순위를 하나의 건수로 취급한다.
[예제]
SELECT JOB, ENAME, SAL,
RANK() OVER (ORDER BY SAL DESC) RANK,
DENSE_RANK() OVER (PARTITION BY JOB ORDER BY SAL DESC) DENSE_RANK
FROM EMP;
[실행 결과]

3) ROW_NUMBER
동일한 값이라도 고유한 순위 부여.
- 동일한 순위를 배제하기 위해 유니크한 순위를 정한다. (ORACLE의 경우 ROWID가 적은 행이 먼저 나옴)
- 동일 값에 대한 순서를 관리하고 싶으면 ORDER BY 절을 이용해 추가적인 정렬 기준을 정의한다.
ex) ROW_NUMBER() OVER (ORDER BY SAL DESC, ENAME)
[예제]
SELECT JOB, ENAME, SAL,
RANK() OVER (ORDER BY SAL DESC) RANK,
ROW_NUMBER() OVER (ORDER BY SAL DESC) ROW_NUMBER
FROM EMP;
[실행 결과]

728x90
반응형
'데이터베이스 > 데이터베이스 공부' 카테고리의 다른 글
엔터티의 분류(유형 엔터티, 개념 엔터티, 사건 엔터티, 기본 엔터티, 중심 엔터티, 행위 엔터티) (0) | 2022.09.04 |
---|---|
그룹 내 행 순서 함수(FIRST_VALUE, LAST_VALUE, LAG, LEAD) (0) | 2022.09.03 |
그룹 함수(ROLLUP, CUBE, GROUPING SETS) (0) | 2022.09.03 |
뷰(VIEW, VIEW 장점, VIEW 생성, VIEW 사용, VIEW 제거) (0) | 2022.09.03 |
FROM절 JOIN(INNER JOIN, NATURAL JOIN, USING 조건절, ON 조건절, CROSS JOIN, OUTER JOIN) (0) | 2022.09.03 |