문제: https://datalemur.com/questions/supercloud-customer
나의 풀이
SELECT customer_id
FROM customer_contracts
JOIN products USING (product_id)
GROUP BY customer_id
HAVING COUNT(DISTINCT product_category) = (
SELECT COUNT(DISTINCT product_category)
FROM products)
ORDER BY customer_id;
못 풀 수도 있겠는데? 싶었는데 풀어서 기분 조타 ^^
위드문을 사용한 솔루션 쿼리
WITH supercloud AS (
SELECT
customers.customer_id,
COUNT(DISTINCT products.product_category) as unique_count
FROM customer_contracts AS customers
LEFT JOIN products
ON customers.product_id = products.product_id
GROUP BY customers.customer_id
)
SELECT customer_id
FROM supercloud
WHERE unique_count = (
SELECT COUNT(DISTINCT product_category)
FROM products)
ORDER BY customer_id;
레프트 조인을 안 해도 되지 않을까?
모든 카테고리에서 구매이력이 있는 고객을 찾는거니까 🤔
위드 문을 쓰는 게 좋은 상황
웨어나 해빙으로 조건문을 쓰는 게 좋은 상황이 뭔지는 잘 모르겠당