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를 받을 수 있다.

테이블이 어떤 구조인지 파악해야하는 교훈을 얻었다.