MYSQL/solvesql
우리 플랫폼에 정착한 판매자 1
수스리
2025. 5. 15. 10:48
문제
olist_order_items_dataset 테이블에는 주문 안에 어떤 상품이 포함되어 있는지, 상품의 판매자는 누구인지 등 상품 단위의 데이터가 들어있습니다.
우리 플랫폼에서 상품을 많이 판매하고 있는 판매자가 누구인지 알고 싶습니다. 총 주문이 100건 이상 들어온 판매자 리스트를 출력하는 쿼리를 작성해주세요.
쿼리 결과에는 아래 컬럼이 있어야 합니다.
- seller_id - 판매자 ID
- orders - 판매자가 판매한 주문 건수
SELECT seller_id, COUNT(DISTINCT order_id) AS orders
FROM olist_order_items_dataset
GROUP BY seller_id
HAVING COUNT(DISTINCT order_id) >= 100
여기서 키 포인트는 DISTINCT order_id다. 이 문제를 틀린 이유는 데이터 구조를 파악하지 못해서다. 이 테이블은 어떤 주ㅜ문이 들어와있는지가 아니라, 어떤 상품을 판매했는지에 관한 정보를 보여주는 테이블이다.
초기에 DISTINCT order_id가 아닌 COUNT(*)로 해야한다. 왜냐하면 아이템을 여러개 사도 같은 주문 id로 묶이기 때문이다. 예를들어 내가 쿠팡에서 우유 하나와 포카칩 한 봉지를 샀다고 치자. 그러면 주문 아이디는 두개가 나온다. 이때 주문 ID를 하나로 묶어줘야 한다. 이렇게 해야 고유한 주문 ID를 받을 수 있다.
테이블이 어떤 구조인지 파악해야하는 교훈을 얻었다.