참고 : 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 |