데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
문제링크
조건정리
풀이
SELECT CART_ID
FROM CART_PRODUCTS
GROUP BY CART_ID
HAVING SUM(CASE WHEN NAME = 'Milk' THEN 1 ELSE 0 END) > 0
AND SUM(CASE WHEN NAME = 'Yogurt' THEN 1 ELSE 0 END) > 0
ORDER BY CART_ID
어.. 또 쓸 데 없이 장황하게 계산을 한 것 같긴 한데..😅 CASE WHEN 어쩌구 THEN 1 ELSE 0 END
하는 방식이 멋져보여서 함 써봤다
쉽게 풀면 그냥 WHERE
절에서 IN
쓰면 뚝딱
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN('Milk', 'Yogurt')
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME) = 2
ORDER BY CART_ID