728x90
1. 순위함수
1-1. RANK
RANK함수는 동일한 값과 동일한 순위를 나타내는 함수입니다.
SELECT ENAME, SAL, RANK() OVER(ORDER BY SAL DESC) AS RANK FROM EMP;
값이 같을 경우 경우 공동 순위로 표현이 됩니다.
FORD와 hong의 SAL 값이 3000으로 공동 2등으로 RANK되며 3등은 건너뛰고 그다음 순위는 4등으로 RANK 됩니다.
1-2. DENSE_RANK
DENSE_RANK는 동일한 갑과 동일한 순위를 표한하지만 같은 순위는 하나의 건수로 표현합니다.
SELECT ENAME, SAL, DENSE_RANK() OVER(ORDER BY SAL DESC) AS DENSERANK FROM EMP;
FROD와 hong의 SAL값이 3000으로 동일하여 공동 2위로 RANK 되었지만 3등을 건너 뛰지 않고 그다음 순위는 3등입니다.
1-3. ROW_NUMBER
ROW_NUMBER는 동일 값이라도 고유한 순위를 가집니다.
SELECT ENAME, SAL, ROW_NUMBER() OVER(ORDER BY SAL DESC) AS ROWNM FROM EMP;
이처럼 값이 같더라도 공동 순위가 아닌 고유 순위를 출력합니다.
예를 들어 한 학급에서 100점으로 공동 1등이 있다면 공동 1등으로 RANK하는게 아니라 출석번호가 빠른 학생이 1등 늦은 학생이 2등으로 RANK되는 것입니다.
2. 계층형 함수
SELECT 컬럼
FROM 테이블
START WITH 계층구조 시작점
CONNECT BY 자식 데이터 조건
계층형 함수는 위와 같은 형태를 가집니다.
--Q) EMP 테이블의 계층구조를 출력해보자
SELECT LPAD(' ',(LEVEL-1)*2, ' ')||ENAME
FROM EMP
START WITH ENAME='KING'
CONNECT BY PRIOR EMPNO=MGR;
마치 폴더의 하위 폴더를 모두 열어놓은거같죠??
728x90
'RDB > Oracle' 카테고리의 다른 글
[ORACLE] 조인(JOIN) (0) | 2022.01.06 |
---|---|
[ORACLE] 서브쿼리(SUBQUERY) (0) | 2022.01.05 |
[ORACLE] Top N Query(ROWID / ROWNUM) (0) | 2022.01.03 |
[ORACLE] 정렬 - ORDER BY (0) | 2022.01.02 |
[ORACLE] 그룹함수 - ROLLUP, CUBE, GROUPING SET (0) | 2022.01.01 |