오랑우탄의 반란

LeetCode 리트코드 | 1045. Customers Who Bought All Products (MySQL) 본문

SQL/LeetCode

LeetCode 리트코드 | 1045. Customers Who Bought All Products (MySQL)

5&2 2024. 7. 15. 10:28
반응형

 

오늘도 오랑이는 문제를 풉니다.

 

1045. Customers Who Bought All Products 

 

풀이 과정

Customer 테이블에서 customer_id 기준으로 정렬했을 때의 product_key 와 Product 테이블의 product_key 가 일치한 경우 customer_id 를 출력하는 쿼리가 필요합니다. 

이때 Product 테이블의 값은 모두 distinct 한 값이란 점을 감안하면, customer_id 기준 각 product_key 의 개수와 Product 테이블 값의 개수가 일치한다는 말로 해석할 수 있습니다. 

 

그러면 이제 쿼리는 완료입니다.  

우선 customer_id 기준으로 group 하고 count 에 대한 조건을 having 절 안에 넣어줍니다.

이때 Customer 테이블의 count에 대해서는 distinct 를 붙여주는 것을 잊지 않습니다.

 

최종 코드

select customer_id from Customer 
group by customer_id
having count(distinct product_key) = (select count(product_key) from Product)

 

 

 

오랑우탄이 영어를 하고 오랑이가 쿼리마스터가 되는 그날까지~

 

 

https://leetcode.com/problems/customers-who-bought-all-products/description/

반응형