DB/Programmers SQL
[My_SQL] Lv.4 우유와 요거트가 담긴 장바구니
에이디/김우진
2024. 6. 10. 15:43
문제
처음 봤을 땐 이게 레벨 4? 라는 생각이 바로 들었다.
NAME이 Milk인 경우와 Yogurt인 경우를 구해서 INTERSECT를 통해서 교집합인 CART_ID를 뽑아냈다.
이후 다른 사람이 푼 것을 봤는데 이 방식도 재밌었다.
NAME이 milk, Yogurt인 것들만 도출해서 cart_id를 기반으로 그룹화하고 중복제거한 NAME의 갯수가 2개인 것을 뽑아냈다. 이 방식도 흥미로워 둘 다 올려본다.
코드
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Milk'
INTERSECT
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Yogurt'
ORDER BY 1 ASC;
OR
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('Milk', 'Yogurt')
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME) = 2
ORDER BY CART_ID;