윈도우 함수를 사용시 함수에 포함시킬 행의 범위를 지정한다. 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)
'코딩테스트 > SQL' 카테고리의 다른 글
SQL > LeetCode 185. Department Top Three Salaries (MySQL) (0) | 2024.06.18 |
---|---|
SQL > LeetCode 1321. Restaurant Growth (MySQL) (0) | 2024.06.17 |
SQL > LeetCode 1341. Movie Rating (MySQL) (2) | 2024.06.14 |
SQL > LeetCode 1907. Count Salary Categories (MySQL) (2) | 2024.06.13 |
SQL > LeetCode Problem Solving: Last Person to Fit in the Bus (AI.ver) (0) | 2024.06.12 |