-
[Oracle] 윈도우 함수(Window Funtion)_그룹 내 집계 함수RDS/Oracle 2019. 3. 21. 07:30반응형
윈도우 함수 종류
- RANK, DENSE_RANK, ROW_NUMBER 함수
2.그룹 내 집계(AGGREGATE) 관련 함수
- SUM, MAX, MIN, AVG, COUNT 함수
- FIRST_VALUE, LAST_VALUE, LAG, LEAD 함수
- CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT 함수
윈도우 함수 문법
SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ([PARTITION BY 컬럼] [ORDER BY 절] [WINDOWING 절])
FROM 테이블명;
WINDOW_FUNCTION
- 함수명
ARGUMENTS (인수)
- 함수에 따라 0 ~ N개의 인수가 지정될 수 있습니다.
PARTITION BY 절
- 전체 집합을 기준에 의해 소그룹으로 나눌 수 있습니다.
ORDER BY 절
- 어떤 항목에 대해 순위를 지정할 지 ORDER BY 절을 기술합니다.
WINDOWING 절
- 함수의 대상이 되는 행 기준의 범위를 지정할 수 있습니다.
SUM 함수
SUM 함수를 이용해 파티션별 윈도우의 합을 구할 수 있습니다.
12345SELECT MGR, ENAME, SAL, SUM(SAL) OVER (PARTITION BY MGR) MGR_SUMFROM EMP;cs 12345SELECT MGR, ENAME, SAL, SUM(SAL) OVER (PARTITION BY MGR ORDER BY SAL RANGE UNBOUNDED PRECEDING) AS MGR_SUMFROM EMP;cs RANGE UNBOUNDED PRECEDING
- 현재 행을 기준으로 파티션 내의 첫 번째 행까지의 범위를 지정합니다.
MAX 함수
MAX 함수를 이용해 파티션별 윈도우의 최대값을 구할 수 있습니다.
12345SELECT MGR, ENAME, SAL, MAX(SAL) OVER (PARTITION BY MGR) MGR_MAXFROM EMP;cs MIN 함수
MIN 함수를 이용해 파티션별로 윈도우의 최소값을 구할 수 있습니다.
12345SELECT MGR, ENAME, SAL, MIN(SAL) OVER (PARTITION BY MGR) MGR_MAXFROM EMP;cs AVG 함수
AVG 함수와 파티션별 ROWS 윈도우를 이용해 원하는 조건에 맞는 데이터에 대한 통계값을 구할 수 있습니다.
123456SELECT MGR, ENAME, HIREDATE, SAL, ROUND(AVG(SAL) OVER (PARTITION BY MGR ORDER BY HIREDATE ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)) AS MGR_AVGFROM EMP;cs ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
- 현재 행을 기준으로 파티션 내에서 앞의 한 건, 현재 행, 뒤의 한 건을 범위로 지정합니다.
COUNT 함수
COUNT 함수와 파티션별 ROWS 윈도우를 이용해 원하는 조건에 맞는 데이터에 대한 통계값을 구할 수 있습니다.
1234SELECT ENAME, SAL, COUNT(*) OVER (ORDER BY SAL RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING) AS SIM_CNTFROM EMP;cs RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING
- 현재 행의 급여값을 기준으로 급여가 -50부터 +150의 범위 내에 포함된 모든 행이 대상이 됩니다.
반응형'RDS > Oracle' 카테고리의 다른 글
[Oracle] 윈도우 함수(Window Funtion)_그룹 내 비율 함수 (0) 2019.03.26 [Oracle] 윈도우 함수(Window Funtion)_그룹 내 행 순서 함수 (0) 2019.03.25 [Oracle] 윈도우 함수(Window Funtion)_그룹 내 순위 함수 (0) 2019.03.20 [Oracle] 그룹 함수(Group Funtion) (0) 2019.03.19 [Oracle] 서브쿼리(Subquery) (0) 2019.03.18