프로그래밍/SQL, Hive, SAS 관련 정보
[SQL 기초] Group by와 Window함수의 동시사용
물박사의 저장공간
2025. 4. 13. 13:42
2025.02.24 - [프로그래밍/SQL, Hive, SAS 관련 정보] - [SQL] Table of Contents
저희가 어떤 그룹화된 집계 결과를 계산하고자 할 때 Group by나 Window함수를 사용하는데요, 그래서 이 두가지 기능이 완벽한 대체재인가? 생각을 할 수도 있을 것 같습니다. 하지만 가끔은 이 두 개를 동시에 사용하는 경우도 존재합니다.
2025.01.30 - [프로그래밍/SQL, Hive, SAS 관련 정보] - [SQL 기초] 최빈값 찾아내기
대신 이렇게 사용할 때는 데이터의 흐름과 결과에 대한 명확한 이해를 바탕으로 사용하셔야 합니다.
쿼리 실행의 순서:
- GROUP BY는 먼저 실행되어 행을 그룹화하고 집계합니다.
- OVER(PARTITION BY) 안에서 사용할 수 있는 열은 GROUP BY에 포함된 열 또는 그룹별 집계 결과여야 합니다.
order_id: 주문 번호
customer_id: 고객 ID
region: 지역
amount: 주문 금액
SELECT
customer_id,
region,
SUM(amount) AS customer_sales,
SUM(SUM(amount)) OVER (PARTITION BY region) AS region_sales
FROM orders
GROUP BY customer_id, region;