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);
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