Oracle에서는 다른 DBMS와 같이 Window Function이 있음(분석 함수라고도 불림)
Inline view를 이용해 작성해야 하는 행간 비교, 연산등이 해당 함수로 편하게 구현 가능함.
1. RANK
- 특정 칼럼에 대한 순위를 구하는 함수. PARTITION 을 사용하여 특정 범위 내에 순위를 구할 수 있음
SELECT JOB,
ENAME,
RANK() OVER (ORDER BY SAL DESC) ALL_RANK, -- 전체 EMP에 대한 연봉 순위
RANK() OVER (PARTITION BY JOB ODER BY SAL DESC) JOB_RANK -- 각 JOB별 EMP에 대한 연봉 순위
FROM EMP;
2. DENSE_RANK
- RANK와 다르게 동일 등수를 하나의 등수로 취급
ex) RANK : 1 - 2 - 2 - 4 ...
DENSE_RANK : 1 - 2 - 2 - 3 ...
SELECT JOB,
ENAME,
RANK() OVER (ORDER BY SAL DESC) ALL_RANK,
DENSE_RANK() OVER (ORDER BY SAL DESC) DENSE_RANK
FROM EMP;
3. ROW_NUMBER
- 중복 관계 없이 순차적으로 숫자를 매김.
SELECT JOB,
ENAME,
ROW_NUMBER() OVER (ORDER BY SAL DESC) ROW_NUM
FROM EMP;
4. SUM, AVG
- PARTITION을 사용하여 각 PARTITION별 합계/평균를 구함.
SELECT MGR,
ENAME,
SAL,
SUM(SAL) OVER (PARTITION BY MGR) MGR_SUM,
AVG(SAL) OVER (PARTITION BY MGR) MGR_AVG
FROM EMP;
- MGR_SUM, MGR_AVG : 동일 상급자를 두고 있는 사원의 SAL 합계를 보여줌
5. MIN, MAX
- PARTITION을 사용하여 각 PARTITION별 최소값/최대값를 구함.
SELECT MGR,
ENAME,
SAL,
MIN(SAL) OVER (PARTITION BY MGR) MGR_MIN,
MAX(SAL) OVER (PARTITION BY MGR) MGR_MAX
FROM EMP;
- MGR_MIN, MGR_MAX : 동일 상급자를 두고 있는 사원의 SAL 최소값, 최대값을 보여줌
반응형
'STUDY > IT' 카테고리의 다른 글
BigDecimal 함수 사용법 (0) | 2022.03.08 |
---|---|
오라클 테이블 변경(ORACLE, ALTER/DROP/TRUNCATE TABLE) (0) | 2021.05.13 |
오라클 테이블 생성 (Oracle, CREATE TABLE) (0) | 2021.05.13 |
[SQLD] 데이터 모델과 성능 (0) | 2021.05.13 |
[SQLD] 데이터 모델링의 이해 2 (0) | 2021.05.11 |