♟️ 알고리즘/Leetcode

Leetcode[MySQL][Leet Code] 1070. Product Sales Analysis III (Medium)

Jerry_K 2025. 3. 5. 16:22

https://leetcode.com/problems/product-sales-analysis-iii/?envType=study-plan-v2&envId=top-sql-50


🗒️SQL 코드 풀이 

SELECT A.product_id , A.year AS first_year ,quantity ,price
    FROM
        Sales A
    INNER JOIN
        (
            SELECT product_id  , MIN(year) AS year
            FROM Sales 
            GROUP BY product_id 
        )B
    ON A.product_id  = B.product_id  
    AND A.year = B.year

 

1. product_id로 GROUP BY 하고, product_id와 MIN(year) 를 SELECT 한다.

 

2.  이후 INNER JOIN 하고, 문제에서 요구하는 컬럼을 SELECT 하면 된다. 

 

 

나의 잘 못 된 풀이 1

SELECT product_id, MIN(year) AS first_year, quantity, price 
FROM Sales 
GROUP BY product_id;
  • 맨 처음 작성했던 코드로 예제 문제는 통과하지만, 실제 테스트 케이스에서 막힌다.
  • 문제가 GROUP BY하고,  MIN 값을 추출 한 부분이다. 
    • MIN(year)는 가장 작은 연도를 정확하게 찾지만, quantity, price는 임의로 선택 됨

 

 

📌 문제 코멘트 

해당 문제를 포스팅하는 이유는 다음과 같다

  • GROUP BY에 MIN 을 했을 떄, 그 이외의 값들이 임의로 선택되는 것을 몰랐음

 


📚문제