데이터 분석 기술 블로그

Average Selling Price _ Easy. LeetCode * 본문

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 값을 기본값이나 다른 값으로 대체하고 싶을 때 사용된다.