프로그래머스 코딩테스트/MySQL

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

Coding-Su 2024. 9. 4. 23:56
728x90

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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

 

 

정답

SELECT CART_ID
FROM CART_PRODUCTS 
WHERE CART_ID IN (
    SELECT CART_ID 
    FROM CART_PRODUCTS
    WHERE NAME = "Yogurt"
    GROUP BY CART_ID
) AND CART_ID IN (
    SELECT CART_ID 
    FROM CART_PRODUCTS
    WHERE NAME = "Milk"
    GROUP BY CART_ID
    HAVING COUNT(NAME) >=1
)
GROUP BY CART_ID

 

 

 

풀이

    SELECT CART_ID 
    FROM CART_PRODUCTS
    WHERE NAME = "Yogurt"
    GROUP BY CART_ID

 

우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니를 알아보기 위해 우선 name에 Yogurt를 포함하고 있는 id를 찾습니다. 

    SELECT CART_ID 
    FROM CART_PRODUCTS
    WHERE NAME = "Milk"
    GROUP BY CART_ID

그 다음 Milk를 포함하고 있는 id를 찾고 AND로 연결해 주었습니다.

 

WHERE CART_ID IN (
    SELECT CART_ID 
    FROM CART_PRODUCTS
    WHERE NAME = "Yogurt"
    GROUP BY CART_ID
) AND CART_ID IN (
    SELECT CART_ID 
    FROM CART_PRODUCTS
    WHERE NAME = "Milk"
    GROUP BY CART_ID
)

AND로 두개를 연결하여 WHERE절을 통해 CART_ID를 찾아 GROUP BY를 하여 문제를 풀었습니다.

728x90