구간 비교
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