꿈은 데이터분석가, 취미는 계획

[MY SQL] 가격 변동이 있는 제품의 평균 가격 구하기 본문

Python/파이썬 문풀

[MY SQL] 가격 변동이 있는 제품의 평균 가격 구하기

data_2080 2024. 9. 20. 13:44
728x90

출처: [leetcode - SQL50] :  1251. Average Selling Price

문제:  가격변동 정보 테이블과 구매 테이블을 사용하여 제품별 평균 가격 구하기


LEFT JOIN 조건 활용하기

1) 기간별 제품의 가격 정보가 있는 테이블과 판매정보 테이블을 LEFT JOIN(판매되지 않은 제품도 포함되도록)
2) JOIN 조건으로 판매일이 제품가격 정보의 기간에 포함되도록 하기
    AND를 사용하여 시작일과 종료일을 구할 수도 있고, BETWEEN을 사용해도 된다. 

3) GROUP BY로 제품별 가격의 평균(금액*판매 수 합 / 전체 판매수 합)을 구하기,
   IFNULL을 사용하여 판매되지 않은 상품은 0으로 나올 수 있게 하기

SELECT p.product_id, IFNULL(ROUND(SUM(p.price*u.units)/SUM(u.units),2),0) AS average_price 
FROM Prices AS p
LEFT JOIN UnitsSold AS u
    ON p.product_id = u.product_id 
        -- AND u.purchase_date >= p.start_date 
        -- AND u.purchase_date <= p.end_date
        AND u.purchase_date BETWEEN p.start_date AND p.end_date
GROUP BY p.product_id
728x90