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

ddoddo·2023년 1월 12일
0

계절성 비교 - 구간 비교

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

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'

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

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'

  • 날짜 컬럼에서 연도만 추출한다.
  • 연도별 매출 합계를 계산한다.
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절에 서브쿼리로 활용한다.
  • 연도별 매출 합계를 활용해 전년도 매출 합계 컬럼을 생성한다.
  • 올해 매출 합계의 비율을 계산한다.
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

0개의 댓글