[코드카타] SQL 04 우유와 요거트가 담긴 장바구니

Data_Student·2024년 10월 24일
0

코드카타

목록 보기
4/57

[코드카타] SQL 04 우유와 요거트가 담긴 장바구니

4. 우유와 요거트가 담긴 장바구니
https://school.programmers.co.kr/learn/courses/30/lessons/62284

# 문제 : 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 
        있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 
        SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
# 조건을 3개로 생각해보자
# 조건 1 NAME 1에 MILK가 있는지
# 조건 2 NAME 2에 YOGURT가 있는지
# 조건 3 NAME 1과 NAME 2에 둘다 있는지 # 조건 1, 2 상태에서 조인할 경우 이미 달성
SELECT A.CART_ID
FROM
    (
    SELECT CART_ID, NAME   # 1 NAME을 빼도 상관 없음, A 쿼리 내용 확인용
    FROM CART_PRODUCTS
    WHERE NAME = 'Milk'
    ) A
JOIN
    (
    SELECT CART_ID, NAME   # 1 NAME을 빼도 상관 없음, B 쿼리 내용 확인용
    FROM CART_PRODUCTS
    WHERE NAME = 'Yogurt'
    ) B
ON A.CART_ID=B.CART_ID
WHERE A.NAME = 'Milk' AND B.NAME = 'Yogurt'   # 조건 3 생략 가능, 조건 1, 2로 달성
GROUP BY CART_ID   # 1 그룹 바이 생략 후 SELCEC에 DISTINCT 사용해도 동일한 결과
ORDER BY CART_ID ;
# 생각해보기!
# 조건이 2가 되는지 여부로도 구분 가능!
# 이때 QUERY 는
# WHERE NAME = 'MILK' OR NAME = 'YOGURT'
# GROUP BY CART_ID
# HAVING COUNT(DISTINCT (NAME) ) = 2

0개의 댓글