[코딩테스트]/[Pandas]

[LeetCode - Pandas] (Easy) 1068. Product Sales Analysis I

잰잰' 2025. 4. 23. 15:33
Table: Sales

+-------------+-------+
| Column Name | Type  |
+-------------+-------+
| sale_id     | int   |
| product_id  | int   |
| year        | int   |
| quantity    | int   |
| price       | int   |
+-------------+-------+

(sale_id, year)는 이 테이블의 기본 키(고유한 값의 열 조합)입니다.
product_id는 Product 테이블에 대한 외래 키(참조 열)입니다.
이 테이블의 각 행은 특정 연도에 product_id 제품에 대한 판매를 나타냅니다.
가격은 단위당 가격임에 유의하세요.

Table: Product

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| product_id   | int     |
| product_name | varchar |
+--------------+---------+

product_id는 이 테이블의 기본 키(고유한 값을 가진 열)입니다.
이 테이블의 각 행은 각 제품의 제품명을 나타냅니다.

 

문제

Sales 테이블에서 각 sale_id에 대한 product_name, year, 및 price를 보고하는 솔루션을 작성하세요.

결과 테이블은 어떤 순서로 반환해도 됩니다.

결과 형식은 다음 예시와 같습니다.

Example 1:

Input: 
Sales table:
+---------+------------+------+----------+-------+
| sale_id | product_id | year | quantity | price |
+---------+------------+------+----------+-------+ 
| 1       | 100        | 2008 | 10       | 5000  |
| 2       | 100        | 2009 | 12       | 5000  |
| 7       | 200        | 2011 | 15       | 9000  |
+---------+------------+------+----------+-------+
Product table:
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 100        | Nokia        |
| 200        | Apple        |
| 300        | Samsung      |
+------------+--------------+
Output: 
+--------------+-------+-------+
| product_name | year  | price |
+--------------+-------+-------+
| Nokia        | 2008  | 5000  |
| Nokia        | 2009  | 5000  |
| Apple        | 2011  | 9000  |
+--------------+-------+-------+

설명 :
sale_id = 1에서 우리는 Nokia가 2008년에 5000에 판매되었다고 결론지을 수 있습니다.
sale_id = 2에서 우리는 Nokia가 2009년에 5000에 판매되었다고 결론지을 수 있습니다.
sale_id = 7에서 우리는 Apple이 2011년에 9000에 판매되었다고 결론지을 수 있습니다.

 

✏️ 풀이

import pandas as pd

def sales_analysis(sales: pd.DataFrame, product: pd.DataFrame) -> pd.DataFrame:
    df = pd.merge(sales, product, how='inner', on='product_id')

    return df[['product_name', 'year', 'price']]

이번 문제는 단순 merge에 원하는 컬럼만 조회하면 되는 문제라 쉽게 풀었다