월별 제품 판매 비교를 위한 SQL 쿼리: 가이드

제품 판매 데이터를 관리하는 데 있어, 연도별로 월별 판매 수치를 비교하는 방법에 대한 명확한 이해는 효과적인 보고를 위해 매우 중요합니다. 소매점을 운영하거나 기업의 판매 데이터를 분석하고 있다면, 판매 추세를 신속하게 식별할 수 있는 능력은 귀중한 통찰력을 제공합니다. 이 글에서는 두 개의 연도에 대해 월별 제품 판매를 비교하는 SQL 쿼리를 구축하는 방법을 탐구하면서, 판매가 없는 월도 명확히 표시할 수 있도록 할 것입니다.

문제 이해하기

당신은 다음과 같은 구조의 데이터셋을 가질 수 있습니다:

카테고리 | 수익    | 연도 | 월
자전거   | 10,000 | 2008 | 1
자전거   | 12,000 | 2008 | 2
자전거   | 12,000 | 2008 | 3
자전거   | 15,000 | 2008 | 4
자전거   | 11,000 | 2007 | 2
자전거   | 11,500 | 2007 | 3
자전거   | 15,400 | 2007 | 4

이 데이터셋에서 당신은 2007년과 2008년의 1월부터 12월까지의 수익을 비교하는 보고서를 생성하고 싶습니다. 목표는 판매가 없는 월을 두 열에서 모두 ‘0’으로 채워, 의사결정을 위한 보다 명확한 비교 자료를 만드는 것입니다.

원하는 출력은 다음과 같을 수 있습니다:

카테고리 | 월 | 올해 수익 | 작년 수익
자전거   | 1  | 10,000   | 0
자전거   | 2  | 12,000   | 11,000
자전거   | 3  | 12,000   | 11,500
자전거   | 4  | 0        | 15,400

SQL 쿼리 작성하기

이를 달성하기 위해 SQL의 강력한 CASE 문을 적절한 집계 함수와 결합하여 사용할 것입니다. 판매 데이터가 기록되지 않은 경우에도 판매 데이터를 원하는 모든 월에 대해 포함하는 보조 테이블을 설정해야 합니다.

단계 1: 테이블 설정

다음과 같은 테이블이 필요합니다:

  • 판매 테이블: 카테고리, 수익, 연도 및 월에 대한 데이터를 보유합니다.
  • 시간 테이블 (tm): 보고하려는 연도와 월의 모든 가능한 조합을 포함합니다.

단계 2: 기본 쿼리 구조

다음은 비어 있는 행 없이 제품 판매 데이터를 가져오는 단순화된 SQL 쿼리입니다:

SELECT
    카테고리,
    ,
    SUM(CASE WHEN YEAR = 2008 THEN 수익 ELSE 0 END) AS 올해_수익,
    SUM(CASE WHEN YEAR = 2007 THEN 수익 ELSE 0 END) AS 작년_수익
FROM
    판매
WHERE
    YEAR IN (2008, 2007)
GROUP BY
    카테고리,
    
ORDER BY
    ;

설명:

  • SUM with CASE: 이는 조건에 따라 각 연도의 수익을 합산하여 두 연도를 구분할 수 있게 합니다.
  • 그룹화: 결과는 명확성을 위해 카테고리별로 정리됩니다.

단계 3: 빈 행 포함

판매가 없는 월도 포함하고 싶다면, 쿼리를 조정하여 판매tm 테이블 모두에서 데이터를 가져오도록 해야 합니다. 방법은 다음과 같습니다:

SELECT
    fill.카테고리,
    fill.,
    SUM(CASE WHEN YEAR = 2008 THEN 수익 ELSE 0 END) AS 올해_수익,
    SUM(CASE WHEN YEAR = 2007 THEN 수익 ELSE 0 END) AS 작년_수익
FROM
    판매
RIGHT JOIN (SELECT DISTINCT 카테고리, YEAR,  FROM 판매 CROSS JOIN tm) AS fill
ON fill.카테고리 = 판매.카테고리 AND fill.YEAR IN (2008, 2007)
GROUP BY
    fill.카테고리,
    fill.
ORDER BY
    fill.;

설명:

  • RIGHT JOIN: 이는 tm 테이블의 모든 월이 포함되도록 보장하며, 판매 데이터가 없는 월도 포함됩니다.
  • 그룹화 및 정렬: 동일한 그룹화 및 정렬을 유지하여 명확한 보고서를 도출합니다.

결론

이 글에서 제시된 기술을 활용하면, 서로 다른 연도에 걸쳐 월별 제품 판매를 효과적으로 비교하는 보고서를 생성할 수 있으며, 판매가 없는 경우에도 계정할 수 있습니다. 이 접근법은 포괄적인 데이터 분석에 도움이 될 뿐만 아니라, 전반적인 보고 능력을 향상시키는 데도 기여합니다.

추가 리딩 및 고급 기능을 위해, SQL Server 2005에서 CASE 문 및 PIVOT을 사용하는 것에 대한 추가 자료를 검토해 보시기 바랍니다. 즐거운 쿼리 작업 되세요!