본문 바로가기

DB/Programmers SQL Kit

[My_SQL] Lv.4 우유와 요거트가 담긴 장바구니

문제

 

 

처음 봤을 땐 이게 레벨 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;