
문제 살펴보기
CART_PRODUCTS테이블은 장바구니에 담긴 상품 정보를 담은 테이블입니다.CART_PRODUCTS테이블의 구조는 다음과 같으며, ID, CART_ID, NAME, PRICE는 각각 테이블의 아이디, 장바구니의 아이디, 상품 종류, 가격을 나타냅니다.
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
요약하자면
WRONG ANSWER
1)요거트와 우유를 넣은 카트 찾는 쿼리짜고 2)이 중 HAVING COUNT(cart_id) > 1 로 중복 제거를 해주면 되지 않을까 생각하고 단순하게 돌림
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME LIKE 'Yogurt' OR NAME LIKE 'Milk'
GROUP BY CART_ID
HAVING COUNT(cart_id) > 1
ORDER BY CART_ID
!간과한 부분
우유나 요거트를 동시에 안 사고 하나를 중복 구매했다는 생각을 하지 못함
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME LIKE 'Yogurt' OR NAME LIKE 'Milk'
GROUP BY CART_ID
HAVING COUNT(DISTINCT name) = 2
ORDER BY CART_ID
중복되는 이름을 제거했을때 이름이 두개 남는 카트는 요구르트와 우유를 동시에 사간 카트일테니까
HAVING COUNT(DISTINCT name) = 2 으로 쿼리문 수정
꾸준히 SQL 코테 공부하고 계셨군요! 넘 멋져요. 저는 SQL 수업 끝나고 쿼리 놓았는데.. 좋은 자극 받아서 다시 코테 풀이 시작해봐야겠어요