
📑 1. 문제설명
❌ 2. 실패한 시도
WHERE NAME = 'Yogurt' AND NAME = 'Milk'처음에는 이렇게 썼는데 결과값이 한 건도 조회되지 않았따.
한 행(row)의 NAME은 한 번에 한 값밖에 가질 수 없다.
즉, 한 행에서 NAME이 'Yogurt'이면서 'Milk'인 경우는 존재하지 않아서 → 항상 FALSE
WHERE NAME = 'Yogurt' OR NAME = 'Milk'이건 두 상품 중 하나라도 들어있으면 선택됨
결과적으로 'Yogurt'만 있는 장바구니도 포함된다 → 문제 요구사항(둘 다 있는 장바구니)과 불일치한다.
IN + GROUP BY + HAVING COUNT(DISTINCT ...) 조합을 사용하면 장바구니 전체를 그룹화한 뒤, 조건에 맞는 상품이 모두 있는지 체크할 수 있다.
⭐ 3. 정답코드
-- 코드를 입력하세요
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('Yogurt', 'Milk')
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME) = 2
ORDER BY CART_ID ASC;- GROUP BY CART_ID → 장바구니 단위로 묶기
- HAVING COUNT(DISTINCT NAME) = 2 → 요거트와 우유가 둘 다 존재하는 장바구니만 남기기
- 같은 장바구니에 Yogurt가 2개 들어있을 수도 있고 여러개 있을 수도 있으니까 DISTNICT
'코딩테스트 > SQL테스트' 카테고리의 다른 글
| [프로그래머스] (MySQL) 헤비 유저가 소유한 장소 문제풀이 (6) | 2025.08.28 |
|---|---|
| [프로그래머스] (MySQL) 입양 시각 구하기(2) 문제풀이 (4) | 2025.08.19 |
| [프로그래머스] (MySQL) 조건별로 분류하여 주문상태 출력하기 (4) | 2025.08.19 |
| [프로그래머스] (MySQL) FrontEnd 개발자 찾기 (6) | 2025.08.17 |
| [프로그래머스] (MySQL) 그룹별 조건에 맞는 식당 목록 출력하기 문제풀이 (5) | 2025.08.17 |