[SQL#104]Customers Whe Bought All Product

Gi Woon Lee·2024년 8월 15일

SQL

목록 보기
2/33

1045.Customers Who Bought All Product

문제 개요

  • 문제:
    customer, product 테이블을 참고하여 모든 product를 구매한 customer를 조회하는 문제
  • 조건:
    customer테이블의 customer_id칼럼은 중복값이 가능하며 product_key칼럼은 product테이블의 PK다(따라서 모든 값이 uique value).


예를 들어 customer,product 테이블이 다음과 같이 주어졌을 때 모든 product_key(5, 6)을 구매한 고객의 customer_id는 1과 3이다.

Work Flow

  1. 일단 모든 product_key가 몇 개인지 알아야 한다. 문제 개요에서 product_key 칼럼이 PK(Primary Key)임을 알려줬다. 따라서 count(distinct product_key)를 통해 product_key의 종류가 몇 개인지 알 수 있다.

    select count(distinct product_key)
    from product
    
    # 2

    위 쿼리를 통해 상품의 종류는 총 2개임을 알 수 있다.
    사실상 문제를 다 풀었다고 볼 수 있다.

  2. 메인쿼리 작성
    고객별로 그룹을 만든 뒤 그들의 상품 구매 수가 상품 종류 수와 동일한 결과를 반환하는 쿼리를 작성한다.

    select customer_id
    from customer
    group by customer_id
    having count(product_key) = (select count(distinct product_key) from product)

한마디

"총 상품의 종류가 몇 개인지 알아야겠다!" <- 이 생각만 할 줄 알면 쉽게 풀어낼 수 있는 문제였다.

0개의 댓글