[코드카타] SQL 31 Average Selling Price

Data_Student·2024년 11월 14일
0

코드카타

목록 보기
40/57

[코드카타] SQL 31 Average Selling Price

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이 아닌 첫 번째 값을 반환

0개의 댓글