WITH sell AS(
SELECT
pr.product_id,
pr.price,
unit.units
FROM
Prices pr
LEFT JOIN UnitsSold unit
ON pr.product_id=unit.product_id
WHERE 1=1
AND unit.purchase_date BETWEEN pr.start_date AND end_date
OR purchase_date is null
)
SELECT
product_id,
CASE
WHEN units IS NULL THEN 0 ELSE ROUND(SUM(price*units)/SUM(units),2) END AS average_price
FROM
sell
GROUP BY
product_id
후.. 테이블을 묶었을 때 NULL 값이 나오기 때문에 이를 잘 처리 해줘야 됨.
WHERE 1=1
AND unit.purchase_date BETWEEN pr.start_date AND end_date
OR purchase_date is null
LEFT JOIN을 하게 되면 purchase_date에서 null값이 발생하는데
이 부분에서 purchase_date 는 start, end 데이터 사이에 오게 하는 조건절만 쓰면 null값은 출력이 안됨.
그래서 purchase_date is null 을 추가 해줌