본문 바로가기

카테고리 없음

[SQLD 공부] 윈도우 함수 WINDOW FUNCTION

 

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)

RANGE(default)는 같은 값은 동시 연산

 

ROWS는 각 행 별로 연산

 

 

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

 

 

 

 

 

 

 

 

 

 

참조 : https://www.youtube.com/watch?v=EXx6fjxycSY