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이다.
일단 모든 product_key가 몇 개인지 알아야 한다. 문제 개요에서 product_key 칼럼이 PK(Primary Key)임을 알려줬다. 따라서 count(distinct product_key)를 통해 product_key의 종류가 몇 개인지 알 수 있다.
select count(distinct product_key)
from product
# 2
위 쿼리를 통해 상품의 종류는 총 2개임을 알 수 있다.
사실상 문제를 다 풀었다고 볼 수 있다.
메인쿼리 작성
고객별로 그룹을 만든 뒤 그들의 상품 구매 수가 상품 종류 수와 동일한 결과를 반환하는 쿼리를 작성한다.
select customer_id
from customer
group by customer_id
having count(product_key) = (select count(distinct product_key) from product)
"총 상품의 종류가 몇 개인지 알아야겠다!" <- 이 생각만 할 줄 알면 쉽게 풀어낼 수 있는 문제였다.