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