문제 출저
문제 풀이
각 제품의 평균 판매 금액을 구해야 합니다.
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