Window 함수란?
Window 함수는 데이터를 **창문(Window)**을 통해 보는 것처럼, 특정 범위(=윈도우) 안에서 데이터를 분석할 수 있게 해주는 SQL 기능이에요.
쉽게 말하면, 그룹화된 데이터나 전체 데이터에서 각 행을 기준으로 순위, 누적값, 평균 등을 계산할 때 사용합니다.
엑셀로 치면 SUM
, RANK
같은 걸 쓰는데, 필터랑 정렬을 복잡하게 걸어야 하는 작업을 SQL에서 한 번에 끝낼 수 있는 거죠!
왜 Window 함수가 필요할까?
- 그룹별 데이터 분석
- 예) 지역별 매출 순위
- 시간 흐름에 따른 데이터 분석
- 예) 날짜별 누적 매출
- 이전/다음 값 비교
- 예) 전월 대비 매출 증감률
핵심 구성
Window 함수는 크게 3가지로 나뉩니다:
- 함수: 계산을 담당 (예:
SUM
,RANK
,ROW_NUMBER
) - OVER 절: 어떤 기준으로 창문을 열지 정함
- PARTITION BY와 ORDER BY:
- PARTITION BY: 데이터를 나누는 기준
- ORDER BY: 계산 순서를 정하는 기준
예시로 쉽게 이해하기 🚀
1️⃣ 순위 구하기: RANK()
“쇼핑몰에서 지역별로 가장 많이 팔린 상품의 순위를 구해볼까요?”
SELECT
region,
product,
sales,
RANK() OVER (PARTITION BY region ORDER BY sales DESC) AS sales_rank
FROM sales_data;
PARTITION BY region
: 지역별로 데이터를 나눔ORDER BY sales DESC
: 매출을 내림차순으로 정렬
결과:
Region | Product | Sales | Sales_Rank |
---|---|---|---|
Seoul | A | 500 | 1 |
Seoul | B | 300 | 2 |
Busan | C | 400 | 1 |
Busan | D | 200 | 2 |
2️⃣ 누적 합계 구하기: SUM()
“날짜별로 고객의 누적 매출을 계산해볼게요!”
SELECT
customer_id,
purchase_date,
sales_amount,
SUM(sales_amount) OVER (PARTITION BY customer_id ORDER BY purchase_date) AS cumulative_sales
FROM sales_data;
PARTITION BY customer_id
: 고객별로 데이터를 나눔ORDER BY purchase_date
: 날짜 순으로 누적 계산
결과:
Customer_ID | Purchase_Date | Sales_Amount | Cumulative_Sales |
---|---|---|---|
1 | 2025-01-01 | 100 | 100 |
1 | 2025-01-03 | 150 | 250 |
2 | 2025-01-02 | 200 | 200 |
2 | 2025-01-05 | 100 | 300 |
3️⃣ 이전 값 비교: LAG()
“이전 구매 금액과 비교해볼까요?”
SELECT
customer_id,
purchase_date,
sales_amount,
LAG(sales_amount) OVER (PARTITION BY customer_id ORDER BY purchase_date) AS previous_sales
FROM sales_data;
LAG(sales_amount)
: 이전 행의 값을 가져옴
결과:
Customer_ID | Purchase_Date | Sales_Amount | Previous_Sales |
---|---|---|---|
1 | 2025-01-01 | 100 | NULL |
1 | 2025-01-03 | 150 | 100 |
2 | 2025-01-02 | 200 | NULL |
2 | 2025-01-05 | 100 | 200 |
Window 함수 한눈에 정리 👀
함수 | 설명 | 활용 예시 |
---|---|---|
RANK() | 순위 계산 | 지역별 매출 순위 |
SUM() | 누적 합계 | 날짜별 누적 매출 |
LAG() | 이전 값 가져오기 | 전월 대비 매출 비교 |
LEAD() | 다음 값 가져오기 | 다음 달 예측 데이터 |
ROW_NUMBER() | 고유 순번 부여 | 순차적인 번호 매기기 |
마무리 📌
SQL Window 함수는 복잡한 데이터를 한눈에 분석할 수 있는 도깨비 방망이 같은 존재예요.
처음에는 익숙하지 않더라도, 익숙해지면 “이걸 왜 이제 알았지?” 할 만큼 유용하답니다!
여러분도 실무에서 꼭 활용해보세요.
“어, 이거 내가 분석해볼게!” 하고 나설 수 있는 멋진 데이터 분석가가 될 수 있을 거예요. 🚀
답글 남기기