SQL OVER 절

Sql Over Jeol



SQL의 가장 고급 기능 중 하나는 OVER 절입니다. 이는 계산을 수행하고 주어진 결과 집합 내의 특정 행 하위 집합에 대해 SQL 창 기능을 적용할 수 있는 기능입니다.

전체 결과 집합을 실제로 축소하지 않고 행 그룹에 대한 집계 또는 순위를 계산해야 할 때 특히 유용합니다.

OVER 절 작업을 시작하기 위해 알아야 할 모든 내용을 알아보려면 이 튜토리얼에 참여하세요.







요구사항:

OVER 절의 기능과 작동 방식을 자세히 알아보기 전에 SQL의 기본 사항을 숙지하고 있는지 확인하세요. 또한 귀하가 지식을 테스트하는 데 사용할 수 있는 데이터베이스에 액세스할 수 있다고 가정합니다.



우리의 경우에는 Sakila 샘플 데이터베이스와 함께 MySQL 데이터베이스를 사용하겠습니다. 충분한 권한이 있고 데이터베이스 엔진이 창 기능을 지원하는지 확인하세요.



통사론:

앞서 언급했듯이 대부분의 경우 윈도우 함수와 함께 OVER 절을 주로 사용합니다.





따라서 절의 구문을 다음과 같이 표현할 수 있습니다.

<창 함수>(표현식) OVER (

[PARTITION BY 파티션_표현식, ...]

[ORDER BY 정렬 표현식 [ASC | 설명], ...]

[프레임_사양]

)

주어진 구문에서 각 구성요소를 다음과 같이 분류할 수 있습니다.



  1. – SUM(), AVG(), ROW_NUMBER(), RANK 등과 같은 특정 행 창에 적용하려는 창 함수를 나타냅니다.
  2. Expression – 윈도우 함수가 적용되는 컬럼이나 표현식을 지정합니다.
  3. PARTITION BY – 결과 세트를 파티션으로 나누는 선택적 절입니다. 각 파티션은 함수가 적용되는 별도의 단위와 같습니다. 동일한 파티션 내의 행은 지정된 열에서 동일한 값을 공유합니다.
  4. ORDER BY – 각 파티션의 행이 처리되는 순서를 지정합니다.
  5. 프레임_사양 – 파티션 내의 행 프레임을 정의하는 선택적 절입니다. 공통 프레임 사양에는 ROWS BETWEEN AND 또는 RANGE BETWEEN AND

이를 마치고 사용 방법에 대한 몇 가지 실제 사례를 살펴보겠습니다.

예:

Sakila 샘플 데이터베이스를 사용하여 절을 사용하는 방법을 보여드리겠습니다. 각 영화 카테고리의 총 수익을 결정해야 하는 예를 생각해 보세요.

다음 예와 같이 OVER 절 및 여러 조인 문과 함께 합계 창 함수를 사용할 수 있습니다.

선택하다
카테고리.이름 AS 카테고리_이름,
film.title AS film_title,
film.rental_rate,
SUM(결제 금액) OVER (PARTITION BY 카테고리.이름) AS total_revenue
에서
영화
가입하다
film_category ON
film.film_id = film_category.film_id
가입하다
카테고리 ON
film_category.category_id = 카테고리.category_id
가입하다
재고 ON
film.film_id = Inventory.film_id
가입하다
렌탈 ON
Inventory.inventory_id = 임대.inventory_id
가입하다
결제 ON
Rental.rental_id = 결제.rental_id
주문
카테고리.이름,
영화.제목;

주어진 쿼리에서 영화 제목, 대여 요금을 선택하고 합계(범주별 파티션에 대한 지불 금액. 이름) 표현식을 사용하여 범주 이름별로 각 범주 파티션의 합계를 결정합니다.

각 고유 범주에서 합계 계산이 다시 시작되도록 하려면 PARTITION BY 절을 사용해야 합니다.

결과 출력은 다음과 같습니다.

거기 있어요!

결론

이 예에서는 SQL에서 OVER 절을 사용하는 기본 사항을 살펴보았습니다. 이는 기본 절이 아니며 다른 SQL 기능에 대한 사전 지식이 필요합니다.