노아

[프로그래머스] 우유와 요거트가 담긴 장바구니 본문

알고리즘/SQL

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

Noaahhh 2024. 9. 19. 14:32

 

Question

 

데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.

 

 

Pseudocode

 

 

  1. WHERE 절에서 필터링:
    • cart_products 테이블에서 name이 'Milk' 또는 'Yogurt'인 상품이 있는 장바구니만 선택합니다.
  2. GROUP BY cart_id:
    • 각 장바구니(cart_id)별로 그룹화합니다. 즉, 각 장바구니에 속한 상품들을 그룹으로 묶습니다.
  3. HAVING Count(DISTINCT( name )) = 2:
    • 그룹화된 장바구니 중에서 'Milk'와 'Yogurt' 두 종류의 상품이 모두 있는 장바구니만 선택합니다.
    • DISTINCT를 사용하여 동일한 상품이 여러 번 포함된 경우에도 한 번만 카운팅합니다.
  4. 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