[MySQL] programmers) 우유와 요거트가 담긴 장바구니

자두·2022년 9월 18일
post-thumbnail

문제 살펴보기
CART_PRODUCTS 테이블은 장바구니에 담긴 상품 정보를 담은 테이블입니다. CART_PRODUCTS 테이블의 구조는 다음과 같으며, ID, CART_ID, NAME, PRICE는 각각 테이블의 아이디, 장바구니의 아이디, 상품 종류, 가격을 나타냅니다.
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.

요약하자면

  1. 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니
  2. 장바구니의 아이디 순

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 으로 쿼리문 수정

profile
하고 싶은 일과 해야 하는 일을 병행하는 데이터 분석기

2개의 댓글

comment-user-thumbnail
2022년 9월 18일

꾸준히 SQL 코테 공부하고 계셨군요! 넘 멋져요. 저는 SQL 수업 끝나고 쿼리 놓았는데.. 좋은 자극 받아서 다시 코테 풀이 시작해봐야겠어요

답글 달기
comment-user-thumbnail
2022년 9월 22일

SQL 코테 문제 풀이과정 잘 보고 갑니다! 덕분에 다양한 시야 얻어 갑니다 🙏🏻

답글 달기