본문 바로가기
Data/[스파르타 내일배움캠프]

[TIL]본캠프 36일차

by MIN_JOON 2024. 6. 7.
  • Z차트
    • 월별 매출, 매출 누계, 이동 합계를 한 차트에 표현한 것
    • 계절의 영향을 배제하고 트렌드를 분석하기 위해 사용하는 차트
    • 매출 누계: 해당 월까지의 매출을 모두 합한 값
    • 이동 합계: 해당 월의 매출과 과거 11개월의 매출을 합한 값
#이탈리아의 제품별 Z차트 구하기

SELECT
     ProductName 
	,DATE_FORMAT(STR_TO_DATE(Date,'%m/%d/%Y'),'%Y-%m') AS dt_month 
	,SUM(Price*Quantity) as monthly_sales  #월별 매출
    ,ROUND(
        SUM(SUM(Price*Quantity)) OVER(PARTITION BY ProductName  ORDER BY 
                                  DATE_FORMAT(STR_TO_DATE(Date,'%m/%d/%Y'),'%Y-%m')
                                   ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW )
         , 2)  AS monthly_cumsum            #매출 누계
     ,ROUND(
        SUM(SUM(Price*Quantity)) OVER(PARTITION BY ProductName  ORDER BY 
                                  DATE_FORMAT(STR_TO_DATE(Date,'%m/%d/%Y'),'%Y-%m')
                                  ROWS BETWEEN 11 PRECEDING AND CURRENT ROW )
         , 2)  AS moving_cumsum             #이동 합계
FROM sales_transaction_v stv 
WHERE Country = 'Italy'
GROUP BY ProductName ,dt_month 
ORDER BY ProductName 
;
  • YOY
    • Year-Over-Year Growth
    • 전년 대비 증가율을 나타내는 지표
    • (올해 매출 - 지난해 매출)/지난해 매출 * 100
#PostgreSQL로 YOY 구하기

WITH sum_spend AS(
  SELECT EXTRACT(YEAR FROM transaction_date) AS year
        ,product_id 
        ,SUM(spend) AS curr_year_spend
  FROM user_transactions
  GROUP BY year,product_id 
  ORDER BY product_id,year

),pr AS (
  SELECT 
     year
    ,product_id
    ,curr_year_spend
    ,LAG(curr_year_spend) OVER(PARTITION BY product_id ORDER BY year)
    AS prev_year_spend 
  FROM sum_spend
)
SELECT 
   year
  ,product_id
  ,curr_year_spend
  ,prev_year_spend
  ,ROUND(
    (curr_year_spend - prev_year_spend)/prev_year_spend*100.0
    ,2)
   AS yoy_rate 
FROM pr

머신러닝 1주차 마무리~~!!

아직 잘 감이 안오긴 하는데

다음 주는 더 많이 이해하길...!

'Data > [스파르타 내일배움캠프]' 카테고리의 다른 글

[TIL]본캠프 37일차  (2) 2024.06.10
[WIL]본캠프 8주차  (2) 2024.06.07
[TIL]본캠프 35일차  (3) 2024.06.05
[TIL]본캠프 34일차  (2) 2024.06.04
[TIL]본캠프 33일차  (2) 2024.06.03