31 Average Selling Price
https://leetcode.com/problems/average-selling-price/submissions/1452095408/
Write a solution to find the average selling price for each product. average_price should be rounded to 2 decimal places. If a product does not have any sold units, its average selling price is assumed to be 0. Return the result table in any order.
#1 select p.product_id, ifnull(round(sum(price*units)/sum(units),2),0) 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 end_date group by product_id #2 SELECT p.product_id, IF(ISNULL(SUM(s.units)), 0, ROUND(SUM(p.price * s.units) / SUM(s.units), 2)) average_price FROM Prices p LEFT JOIN UnitsSold s ON p.product_id = s.product_id AND s.purchase_date BETWEEN p.start_date AND p.end_date GROUP BY p.product_id
1) group by로 그룹화 할때의 주의점 Null이 포함되어 있는 값이라면 Null이 상단에 보여 그룹화 했을 때 Null값만 보일 수 있다. 그렇기 때문에 group by 할 때에는 여러 행을 그룹화 할때 단일행만 조건으로 추출하지 않도록 하자! 2) NULL값을 처리하는 IFNULL() 함수와 COALESCE() 함수에 대해 알아보자! IFNULL() - 해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 하는 함수 COALESCE() - 지정한 표현식들 중에 NULL이 아닌 첫 번째 값을 반환