WINDOW FUNCTION
- 서로 다른 행의 비교나 연산을 위해 만든 함수
- GROUP BY 를 쓰지 않고 그룹연산 가능 (전체 데이터를 출력하나 PARTITION BY의 컬럼으로 묶음)
- LAG, LEAD, SUM, AVG, MIN, MAX, COUNT, RANK
문법
SELECT 윈도우함수([대상]) OVER(
[PARTITION BY 컬럼]
[ORDER BY 컬럼 ASC|DESC]
[ROWS|RANGE BETWEEN A AND B]
);
- 대상 : RANK, SUM 등의 함수를 쓸 수 있음
* 아래 순서대로 작성야 함
- PARTITION BY 절 : 나열한 컬럼을 그룹 묶어서 연산
- ORDER BY : RANK, SUM, COUNT 등 누적값 출력 시 필수
- ROWS|RANGE BETWEEN A AND B : 연산 범위 설정, ORDER BY 필수
그룹함수
- SUM, COUNT, AVG, MIN, MAX 등
- OVER절을 사용하여 윈도우 함수로 사용 가능
예제(SUM OVER)
SELECT EMPNO, ENAME, SAL,
SUM(SAL) OVER() AS TOTAL
FROM EMP;
윈도우함수의 연산 범위 설정
1. ROWS / RANGE 차이
- ROWS : 값이 같더라도 각 행씩 연산 -- 범위설정 필수 ( BETWEEN A AND B )
- RANGE : 같은 값은 하나의 RANGE로 묶어 동시 연산(default)
2. BETWEEN A AND B
- A 시작점 정의
- CURRENT ROW : 현재 행부터
- UNBOUNDED PRECENDING : 처음부터 (default)
- N PROCEDING : N 이전부터
- B 마지막 시점 정의
- CURRENT ROW : 현재 행까지 (default)
- UNBOUNDED FOLLOWING : 마지막까지
- N FOLLOWING : N 이후까지
37:53