본문 바로가기
프로그래밍 언어(Programming Languages)/SQL

[SQL] SQL 윈도우 함수(Window Functions): 데이터 분석의 마법사가 되는 방법 🧙‍♂️🔍

by 데이터 벌집 2023. 12. 10.

안녕하세요, SQL 마법사 여러분! 오늘은 SQL의 숨겨진 보석, 바로 윈도우 함수에 대해 다뤄보려고 합니다. 🧙‍♂️🔮 윈도우 함수는 데이터 분석의 세계에서 강력한 도구로, 복잡한 데이터 집합을 쉽고 효율적으로 처리할 수 있게 해줍니다. 집계 함수와는 달리, 윈도우 함수는 각 행의 독특한 특성을 유지하면서 데이터의 깊은 통찰력을 제공합니다. 이 블로그를 통해 여러분도 SQL 윈도우 함수의 마법 같은 힘을 체험할 수 있을 거예요! ✨📊

 

SQL Window Functions

 


SQL 윈도우 함수란?

 

윈도우 함수는 현재 행과 관련된 테이블의 일련의 행을 대상으로 복잡한 계산을 수행합니다. 집계 함수와는 달리 행을 하나로 축소하지 않고 개별 행의 정체성을 유지합니다.

 

SELECT 
    [Column1], 
    [Window Function] OVER (PARTITION BY [Column2] ORDER BY [Column3]) 
FROM [Table];

 


SQL 윈도우 함수 예제들

테이블 이름 필드 설명
Orders CustomerID, OrderAmount, OrderDate 고객별 주문 정보, 주문 금액 및 주문 날짜를 포함
OrderDetails ProductID, Quantity, OrderDate 각 주문의 세부 사항, 제품 식별자 및 주문 수량을 포함
ExamScores Score 시험 점수 정보, 개별 점수를 포함
SalesRecords EmployeeName, DepartmentID, SalesAmount 직원별 매출 기록, 직원 이름, 부서 식별자 및 매출액을 포함

 

이 표는 각 테이블의 주요 필드와 그들이 어떤 정보를 포함하는지를 간략하게 요약한 것입니다. 이러한 테이블들은 윈도우 함수를 사용한 SQL 쿼리 예제에서 다양한 계산과 분석에 사용됩니다.

 

 

1️⃣ 연속 합계

데이터셋의 행을 진행하면서 값의 누적 합계를 계산하는데 사용됩니다.

SELECT 
    OrderDate,
    ProductID,
    Quantity,
    SUM(Quantity) OVER (PARTITION BY ProductID ORDER BY OrderDate) AS CumulativeQuantity
FROM OrderDetails;

 

 

2️⃣ 이동 평균

시간에 따른 데이터 변동을 평활화하여 추세를 쉽게 식별할 수 있도록 합니다.

SELECT 
    OrderDate,
    ProductID,
    Quantity,
    AVG(Quantity) OVER (PARTITION BY ProductID ORDER BY OrderDate ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) AS MovingAvgQuantity
FROM OrderDetails;

 

3️⃣ 행 비교

행 간 비교를 통해 통찰력을 얻을 수 있는 또 다른 응용입니다.

SELECT 
    OrderDate,
    CustomerID,
    OrderAmount,
    LEAD(OrderAmount, 1) OVER (PARTITION BY CustomerID ORDER BY OrderDate) AS NextOrderAmount
FROM Orders;

 

4️⃣ 누적 분포

값의 누적 분포를 계산하여 데이터의 분포를 이해하는 데 사용됩니다.

SELECT 
    Score,
    CUME_DIST() OVER (ORDER BY Score) AS CumulativeDistribution
FROM ExamScores;

 

 

5️⃣ 데이터 분할

세분화된 데이터에 대해 계산을 수행하여 더 나은 분석을 가능하게 합니다.

 

SELECT 
    EmployeeName,
    DepartmentID,
    SalesAmount,
    SUM(SalesAmount) OVER (PARTITION BY DepartmentID) AS TotalSalesByDepartment
FROM SalesRecords;

여러분, 오늘 우리는 SQL 윈도우 함수라는 강력한 도구를 탐험했습니다. 이 기능을 통해 데이터 분석가들은 데이터의 숨겨진 이야기를 발견하고, 보다 깊은 통찰력을 얻을 수 있습니다. 윈도우 함수는 단순한 계산을 넘어서, 데이터의 흐름과 패턴을 이해하는 데 큰 도움을 줍니다. 📈🔍

 

오늘 배운 내용을 실제 데이터셋에 적용해보면서 SQL 윈도우 함수의 힘을 직접 체험해 보세요. 데이터 분석의 세계에서 윈도우 함수는 마치 마법처럼 여러분의 SQL 능력을 한 단계 업그레이드시켜 줄 것입니다. 데이터 분석의 새로운 창을 열고, 더 깊고 넓은 데이터의 세계로 여행을 떠나볼 준비가 되셨나요? 🚀🌌

 

이제 윈도우 함수와 함께라면, 여러분도 데이터 분석의 마법사가 될 수 있습니다! 🧙‍♂️✨