데이터셋 확인은 이전글 참조
2021.08.09 - [SQL/MySQL] - [프로그래머스] SQL 코딩테스트 연습 01. DB 확인
이번에 풀 문제는 Summer/Winter Coding(2019)의 우유와 요거트가 담긴 장바구니 문제이다.
지난번 문제와 마찬가지로 Level 4에 랭크되어 있지만 구하고자 하는 것이 명확해서 체감난이도는 어렵지 않다.
JOIN과 서브쿼리를 잘 활용할 수 있는지 묻는 문제이다.
[문제]
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
[예시]
[풀이]
Milk가 있는 장바구니를 서브쿼리로 뽑고, Yogurt가 있는 장바구니를 서브쿼리로 뽑아 JOIN하면 된다.
SELECT DISTINCT T1.CART_ID
FROM (
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Milk'
) AS T1
JOIN (
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Yogurt'
) AS T2 ON T1.CART_ID = T2.CART_ID
ORDER BY CART_ID;
주의할 점은, SELECT 절에서 DISTINCT를 걸어주어야 한다. 그렇지 않으면 Milk와 Yogurt를 2개 이상 구매한 CART_ID가 중복으로 출력된다.
원하는 장바구니 ID를 출력할 수 있다.