SQL Window 함수: 데이터 분석의 마법사 🪄

Window 함수란?

Window 함수는 데이터를 **창문(Window)**을 통해 보는 것처럼, 특정 범위(=윈도우) 안에서 데이터를 분석할 수 있게 해주는 SQL 기능이에요.

쉽게 말하면, 그룹화된 데이터나 전체 데이터에서 각 행을 기준으로 순위, 누적값, 평균 등을 계산할 때 사용합니다.
엑셀로 치면 SUM, RANK 같은 걸 쓰는데, 필터랑 정렬을 복잡하게 걸어야 하는 작업을 SQL에서 한 번에 끝낼 수 있는 거죠!


왜 Window 함수가 필요할까?

  1. 그룹별 데이터 분석
    • 예) 지역별 매출 순위
  2. 시간 흐름에 따른 데이터 분석
    • 예) 날짜별 누적 매출
  3. 이전/다음 값 비교
    • 예) 전월 대비 매출 증감률

핵심 구성

Window 함수는 크게 3가지로 나뉩니다:

  1. 함수: 계산을 담당 (예: SUM, RANK, ROW_NUMBER)
  2. OVER 절: 어떤 기준으로 창문을 열지 정함
  3. PARTITION BYORDER 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: 매출을 내림차순으로 정렬

결과:

RegionProductSalesSales_Rank
SeoulA5001
SeoulB3002
BusanC4001
BusanD2002

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_IDPurchase_DateSales_AmountCumulative_Sales
12025-01-01100100
12025-01-03150250
22025-01-02200200
22025-01-05100300

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_IDPurchase_DateSales_AmountPrevious_Sales
12025-01-01100NULL
12025-01-03150100
22025-01-02200NULL
22025-01-05100200

Window 함수 한눈에 정리 👀

함수설명활용 예시
RANK()순위 계산지역별 매출 순위
SUM()누적 합계날짜별 누적 매출
LAG()이전 값 가져오기전월 대비 매출 비교
LEAD()다음 값 가져오기다음 달 예측 데이터
ROW_NUMBER()고유 순번 부여순차적인 번호 매기기

마무리 📌

SQL Window 함수는 복잡한 데이터를 한눈에 분석할 수 있는 도깨비 방망이 같은 존재예요.
처음에는 익숙하지 않더라도, 익숙해지면 “이걸 왜 이제 알았지?” 할 만큼 유용하답니다!

여러분도 실무에서 꼭 활용해보세요.
“어, 이거 내가 분석해볼게!” 하고 나설 수 있는 멋진 데이터 분석가가 될 수 있을 거예요. 🚀


게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다