SUM
파티션별 윈도우 합을 구할 수 있음
EX1) 동일한 DEPTNO를 가진 사원들의 SAL 합계
SELECT DEPTNO,ENAME,SAL,SUM(SAl) OVER (PARTITION BY DEPTNO) AS SUM
FROM EMP;
EX2) EX1에서 SAL 누적갑 출력
SELECT DEPTNO,ENAME,SAL,SUM(SAl) OVER (PARTITION BY DEPTNO ORDER BY SAL) AS SUM
FROM EMP;
MAX
파티션별 윈도우 최대값을 구할 수 있음.
EX1) DEPTNO가 같은 사원들의 SALARY 중 최대값 구하기
SELECT DEPTNO, ENAME, SAL, MAX(SAL) OVER (PARTITION BY DEPTNO) AS MAXDATA
FROM EMP;
MIN
파티션별 윈도우 최소값을 구할 수 있음
EX1) DEPTNO가 같은 사원들의 SALARY 중 최소값 구하기
SELECT DEPTNO, ENAME, SAL, MIN(SAL) OVER (PARTITION BY DEPTNO) AS MIN
FROM EMP;
AVG
파티션별 윈도우의 평균을 구할 수 있음
ROWS 윈도우를 이용해 원하는 조건에 맞는 데이터에 대한 통계값을 구할 수 있다.
EX1) DEPTNO가 같은 사원들의 SALARY 평균 구하기
SELECT DEPTNO, ENAME, SAL, ROUND(AVG(SAL) OVER (PARTITION BY DEPTNO)) AS AVG
FROM EMP;
EX2) EMP 테이블에서 같은 매니저를 두고 있는 사원들의 같은 매니저 내에서 자기 바로 앞의 사번과 바로 뒤의 사번인 직원들의 평균 SALAY를 구하기.
SELECT MGR, ENAME, SAL,
ROUND(AVG(SAL) OVER
(PARTITION BY MGR ORDER BY HIREDATE ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)) AS MAXDATA
FROM EMP;
COUNT
파티션별 ROWS를 이용하여 조건에 맞는 데이터에 대한 통계값을 구할 수 있다.
EX) 사원들을 급여 기준으로 정렬하고, 본인의 급여보다 50이하 적거나 150 이하로 많은 급여를 받는 인원수 출력
SELECT ENAME, SAL, COUNT(*) OVER
(ORDER BY SAL RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING) AS SIM_CNT
FROM EMP;
RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING
현재 행의 급여값을 기준으로 급여가 -50에서 +150 범위 내에 포함된 모든 행이 대상이 됨.
RANGE는 현재 행의 데이터 값을 기준으로 압뒤 데이터 값의 범위를 표시하는 것.
'SQLD > SQL 기본 및 활용' 카테고리의 다른 글
윈도우 함수(WINDOW FUNCTION) 5 - 그룹 내 비율 함수 (1) | 2019.07.04 |
---|---|
윈도우 함수(WINDOW FUNCTION) 4 - 그룹 내 행 순서 함수 (0) | 2019.07.04 |
윈도우 함수(WINDOW FUNCTION) 2 - 그룹 내 순위 함수 (0) | 2019.07.04 |
윈도우 함수(WINDOW FUNCTION) 1 - 종류 및 문법 (0) | 2019.07.04 |