본문 바로가기
SQLD/SQL 기본 및 활용

윈도우 함수(WINDOW FUNCTION) 3 - 일반 집계 함수

by 밍구몬 2019. 7. 4.

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 현재 행의 데이터 값을 기준으로 압뒤 데이터 값의 범위를 표시하는 .