본문 바로가기
빅데이터 공부/SQL

[프로그래머스 / MySQL / Lv.4 우유와 요거트가 담긴 장바구니]

by waggish 2025. 3. 10.
  • 문제설명


  • 문제


  • 풀이

1. 우유와 요거트를 동시에 구입 필터링 걸기(WHERE)

SELECT *
FROM CART_PRODUCTS
WHERE NAME IN('Yogurt', 'Milk')

 

2. 각 장바구니의 상품을 묶어서 확인해야함(GROUP BY)

SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN('Yogurt', 'Milk')
GROUP BY CART_ID

 

3. 각 CART_ID 별로 NAME의 고유값 개수를 세어 우유와 요거트가 둘 다 포함된 경우만 선택(HAVING COUNT)

SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN('Yogurt', 'Milk')
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME) = 2

👉 HAVING COUNT(DISTINCT NAME) = 2를 안쓰면 'Yogurt' 또는 'Milk' 중 하나라도 포함된 모든 CART_ID가 출력됨

 

4. CART_ID 기준으로 오름차순 정렬(ORDER BY)

SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN('Yogurt', 'Milk')
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME) = 2
ORDER BY CART_ID

  • 실행결과