본문 바로가기
문제풀이/SQL(My sql)

[문제풀이] Leet code - Product Sales Analysis III

by kime2 2024. 8. 1.
출처

 

문제

판매된 모든 제품의 첫 해에 대한 제품 ID, 연도, 수량 및 가격을 선택하는 솔루션을 작성합니다.
결과 테이블을 순서에 관계없이 반환합니다.

 

문제에 대한 해석

 

제품(product_id)에 따라 판매된 최초의 연도와 해당 연도에  따른 수량과 가격을 조회하는 것

 

풀이(MYSQL)

-- 정답
select a.product_id, b.first_year, quantity, price
from Sales a 
join (select product_id, min(year) as'first_year' from Sales group by product_id) b
on a.product_id = b.product_id 
and a.year = b.first_year

서브쿼리로 product_id에 따른 최초의 연도를 조회하여

해당 아이디와 연도에 맞는 수량과 가격을 inner join을 통해 조회

 

-- 정답2
select product_id, year as'first_year', quantity, price
from Sales
where (product_id, year) in (select product_id, min(year)
                            from Sales
                            group by product_id)

동일한 서브쿼리를 조인하지 않고 where절에 사용하는 경우

 

 

-- 오답

select product_id, min(year) as'first_year' , quantity, price
from Sales 
group by product_id

 서브쿼리를 하지 않고 그룹화하여 수량과 가격을 조회할 경우

해당 연도에 맞지 않는 데이터를 불러오게 된다