알고리즘/SQL
[프로그래머스] 우유와 요거트가 담긴 장바구니
Noaahhh
2024. 9. 19. 14:32
Question
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
Pseudocode
- WHERE 절에서 필터링:
- cart_products 테이블에서 name이 'Milk' 또는 'Yogurt'인 상품이 있는 장바구니만 선택합니다.
- GROUP BY cart_id:
- 각 장바구니(cart_id)별로 그룹화합니다. 즉, 각 장바구니에 속한 상품들을 그룹으로 묶습니다.
- HAVING Count(DISTINCT( name )) = 2:
- 그룹화된 장바구니 중에서 'Milk'와 'Yogurt' 두 종류의 상품이 모두 있는 장바구니만 선택합니다.
- DISTINCT를 사용하여 동일한 상품이 여러 번 포함된 경우에도 한 번만 카운팅합니다.
- ORDER BY 1:
- 장바구니 ID(cart_id)를 기준으로 오름차순으로 정렬합니다.
Code
SELECT cart_id
FROM cart_products
WHERE name = 'Milk'
OR name = 'Yogurt'
GROUP BY cart_id
HAVING Count(DISTINCT( name )) = 2
ORDER BY 1