SQL > WINDOW FUNCTION / ROWS & RANGE
윈도우 함수를 사용시 함수에 포함시킬 행의 범위를 지정한다. ROWS와 RANGE가 존재한다.
다음 블로그를 참고하여 정리했습니다. https://camel-context.tistory.com/14
[SQL][SQLD][SQLP] 윈도우 함수
윈도우 함수 SELECT WINDOW_FUNCTION([컬럼]) OVER ( [PARTITION BY 컬럼] [ORDER BY 컬럼] [WINDOWING 절] ) FROM 테이블명 ; 윈도우 함수는 로우 간의 관계를 구할 수 있도록 만들어 놓은 함수이다. 로우 간의 순위, 집
camel-context.tistory.com
Rows & Range
ROWS : 현재 row 위치에서 물리적인 범위를 지정한다.
RANGE: 현재 row 값을 기준으로 논리적인 범위를 지정.
[UNBOUNDED PRECEDING]
ROW: 현재 행과 현재 행 위에 있는 모든 행들을 함수에 사용한다.
RANGE: 현재 행의 값을 기준으로 이하의 값을 함수에 사용한다.
[숫자 PRECEDING]
ROW: 현재 행과 바로 위의 N개의 행의 값을 함수에 사용한다. -> 숫자를 지정한 만큼 앞의 값을 사용
=> SUM(A) OVER (ORDER BY B ROWS 1 PRECEDING) 이라면 A의 값은 B행으로 나열하였을때
앞의 첫 행의 값을 더해서 값을 산출한다.
[BETWEEN과 함께]
범위를 지정하고 싶다면 BETWEEN을 사용해서 작성할 수 있다.
예를 들어서 현재로부터 6일 이전의 전의 값까지 합하고 싶다면 이런 쿼리문을 작성하면 된다.
SUM(amount) OVER (ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)