더북(TheBook)

코드 11-11을 실행해 보면 결과는 동일한데, 쿼리는 매우 간단해졌습니다. 코드 11-10에서는 2018년 이후 1~10위 영화를 조회하는 부분을 메인쿼리로 두고 서브쿼리에서 연도별 집계 값을 산출하지만, 코드 11-11에서는 윈도우 함수 덕분에 서브쿼리를 사용하지 않고도 간단하게 연도별 총액과 평균을 조회합니다.

연도별 총액을 가져온 부분에서 SUM(sale_amt)는 매출액 합계를 구하고, OVER (PARTITION BY YEAR(release_date))는 연도별로 그룹을 짓는다는 의미입니다. 따라서 이 구문은 연도별로 매출액 합계를 계산한 결과를 반환합니다. 그다음 줄에서 평균 매출액도 같은 방식으로 계산합니다.

이제 윈도우와 윈도우 함수를 어떻게 사용하는지 구문을 보죠.

구문 11-3

함수부 OVER (PARTITION BY 칼럼1, 칼럼2, ...
                 ORDER BY ...)

구문은 함수부과 OVER 절로 구성됩니다. OVER 절은 다시 PARTITION BYORDER BY 절로 나뉘는데, 여기서 PARTITION BY 절이 로우의 그룹인 윈도우를 지정하는 역할을 합니다. 그리고 ORDER BY 절은 그룹으로 지정된 로우의 순서를 지정합니다.

윈도우를 대상으로 연산할 수 있는 함수는 집계 함수윈도우 함수 두 가지입니다. 따라서 구문의 함수부에는 집계 함수를 사용할 수도 있고 윈도우 함수를 사용할 수도 있습니다. 그런데 굳이 윈도우 함수라고 한 이유는 윈도우 함수는 반드시 윈도우를 지정하는 OVER 절과 함께 사용하기 때문입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.