참고 : https://velog.io/@yewon-july/Window-Function
아직 자 이해가 안감
SELECT WINDOW_FUNCTION(ARGUMENTS)
OVER (PARTITION BY 칼럼
ORDER BY WINDOWING절)
FROM 테이블명;
| 구조 | 설명 |
|---|---|
| ARGUMENT(인수) | 윈도우 함수에 따라서 0~N개의 인수를 설정 |
| PARTITION BY | 전체 집합을 기준에 의해 소그룹으로 나눔 |
| ORDERY BY | 어떤 항목에 대해서 정렬 |
| *WINDOWING | - 행 기준 범위를 정함 - ROWS는 물리적 결과의 행 수 이고 RANGE는 논리적인 값에 의한 범위 |
| 구조 | 설명 |
|---|---|
| ROWS | 부분집합인 윈도우 크기를 물리적 단위로 행의 집합을 지정함 |
| RNAGE | 논리적 주소에 의해 행집합을 지정 |
| BETWEEN ~AND | 윈도우의 시작과 끝 위치 지정 |
| UNBOUNDED PRECEDING | 윈도우 시작위치가 첫 번째 행임을 의미 |
| UNBOUNDED FOLLOWING | 윈도우 마지막 위치가 마지막 행임을 의미 |
| CURRENT ROW | 윈도우 시작위치가 현재 행임을 의미 (데이터가 인출된 현재 행을 의미) |
전체 합계
SELECT EMPNO, ENAME, SAL
SUM(SAL) OVER (ORDER BY SAL
ROWS BETWEEN UNBOUNDED PRECEDING
AND UNBOUNDED FOLLOWING) TOTAL
FROM EMP;
누적 합계
SELECT EMPNO, ENAM, SAL
SUM(SAL) OVER(ORDER BY SAL
ROWS BETWEEN UNBOUNDED PRECENDING
AND CURRENT ROW)TOTSAL
FROM EMP;
| 행 순서 | 설명 |
|---|---|
| FIRST_VALUE | - 파티션에서 가장 처음 나오는 값을 구함 - MIN 함수를 사용해 같은 결과를 구할 수 있음 |
| LAST_VALUE | - 파티션에서 가장 나중에 오는 값을 구함 |
| LAG | - 이전 행을 가져옴 |
| LEAD | - 윈도우에서 특정 위치 행을 가져옴 - 기본값 1 |