SQL/문제풀이
Average Selling Price _ Easy. LeetCode *
데이터분석가 이채은
2024. 10. 6. 18:05
Solution
SELECT p.product_id,
ROUND(CASE
WHEN SUM(u.units) IS NULL THEN 0
ELSE SUM(p.price * u.units) / SUM(u.units)
END, 2) AS average_price
FROM Prices p
LEFT JOIN UnitsSold u
On p.product_id = u.product_id
AND u.purchase_date BETWEEN p.start_date AND p.end_date
GROUP BY p.product_id;
Solution 2
SELECT p.product_id,
ROUND(COALESCE(SUM(p.price * u.units) / SUM(u.units), 0), 2) AS average_price
FROM Prices p
LEFT JOIN UnitsSold u
ON p.product_id = u.product_id
AND u.purchase_date BETWEEN p.start_date AND p.end_date
GROUP BY p.product_id;
CASE WHEN 말고 다른 방법이 있는지 확인해 봤다. COALESCE는 NULL 값을 처리할 때 사용하는 함수로, 여러 인수 중 첫 번째 NULL이 아닌 값을 찾을 수 있다. 이 함수는 주로 데이터에서 NULL 값을 기본값이나 다른 값으로 대체하고 싶을 때 사용된다.