Home 계절성 분석 - 구간 비교 YoY과 MoM
Post
Cancel

계절성 분석 - 구간 비교 YoY과 MoM

구간 비교

LAG() 함수를 사용하여 이전 날짜와 이전 날짜의 매출 컬럼을 생성한다. 이는 현재와 이전의 매출을 비교하기 위함이다.

1
2
3
4
5
6
7
8
SELECT
	kind_of_business,
	sales_month,
	sales,
	LAG(sales_month) OVER(PARTITION BY kind_of_business ORDER BY sales_month) AS prev_month,
	LAG(sales) OVER(PARTITION BY kind_of_business ORDER BY sales_month) AS prev_month_sales
FROM retail_sales
WHERE kind_of_business = 'Book stores'


위에서 생성한 이전 매출 컬럼을 활용하여 현재와 이전의 매출을 비교한다. 이전 매출에 비해 현재 매출에 대한 비율을 계산한다.

1
2
3
4
5
6
7
SELECT
	kind_of_business,
	sales_month,
	sales,
	ROUND(((sales / LAG(sales) OVER(PARTITION BY kind_of_business ORDER BY sales_month)-1)*100), 2) AS pct_growth_from_previous
FROM retail_sales
WHERE kind_of_business = 'Book stores'


  • 날짜 컬럼에서 연도만 추출한다.
  • 연도별 매출 합계를 계산한다.
    1
    2
    3
    4
    5
    6
    
    SELECT
      DATE_PART('year', sales_month) AS sales_year,
      SUM(sales) AS yearly_sales
    FROM retail_sales
    WHERE kind_of_business = 'Book stores'
    GROUP BY DATE_PART('year', sales_month);
    


  • 바로 위에서 구한 쿼리를 FROM절에 서브쿼리로 활용한다.
  • 연도별 매출 합계를 활용해 전년도 매출 합계 컬럼을 생성한다.
  • 올해 매출 합계의 비율을 계산한다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    SELECT
      sales_year,
      yearly_sales,
      LAG(yearly_sales) OVER(ORDER BY sales_year ASC) AS prev_year_sales,
      ROUND(((yearly_sales / 	LAG(yearly_sales) OVER(ORDER BY sales_year ASC))-1)*100, 2) AS pct_growth_from_previous
    FROM (
      SELECT
          DATE_PART('year', sales_month) AS sales_year,
          SUM(sales) AS yearly_sales
      FROM retail_sales
      WHERE kind_of_business = 'Book stores'
      GROUP BY DATE_PART('year', sales_month)
    ) AS sub
    

This post is licensed under CC BY 4.0 by the author.