SQL/리트코드 문제풀이

[LeetCode] 1251. Average Selling Price

너지살 2024. 5. 25. 20:12

 

 

 

문제 출저

https://leetcode.com/problems/average-selling-price/description/?envType=study-plan-v2&envId=top-sql-50

 

 

 

 

문제 풀이

각 제품의 평균 판매 금액을 구해야 합니다. 

Prices 테이블에는 날짜 범위에 해당하는 가격이 UnitsSold 테이블에는 상품, 판매날짜, 갯수가 표시되어 있습니다. 

 

Prices와 UnitsSold를 left join 합니다. 

조인 조건은 product_id 같은 것, 그리고 Between을 이용해 판매 날짜가 Prices의 날짜 사이에 있도록 합니다. 

sum(price * units)을 통해 전체 금액과 sum(units)을 통해 총 판매량을 구하고 전체 금액에서 총 판매량을 나누어 평균을 구합니다. round를 이용하여 소수 둘째 자리가 나오도록 합니다. ifnull을 이용하여 판매가 없는 경우 0이 나오도록 합니다. 

 

 

 

SQL

# 각 제품의 평균 판매 금액

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 between p.start_date and p.end_date 
group by 
    product_id