습득한점:
코딩테스트 출제 문제 인 것 같은데, 어렵지는 않았으나 접근할 수 있는 방법이 생각보다 많아보였다.
조인으로도, WITH로도 풀 수 있을 것 같다.
문제:
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지에 대한 이력 파악
우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 쿼리 작성
정렬은 아이디로
문제파악:
NAME 컬럼에
'Milk', 'Yogurt'가 모두 들어가는 값만 걸러낸다.
여기서 걸러낸 결과 NAME 카운트 값이 Milk =1 , Yogurt=1 이라고 당연하게 생각했던게 실수 였다.
2개인것도 3개 이상인 것도 고려를 해야했다.
아무튼 WHERE NAME IN ~으로는 2개 이상인 값들만 찾을 수 있으니, 이를 처리할 방법을 찾아야 했는데,
COUNT(DISTINCT NAME) = 2를 조건으로 걸면,
반드시 Milk 1개, Yogurt 1개의 구성으로 이루어진 CART_ID만 찾을 수 있고,
이 과정에서 예를들어 Yogurt만 있는 CART_ID, Milk만 있는 CART_ID를 걸러낼 수 있다.
풀이:
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('Milk', 'Yogurt')
GROUP BY CART_ID
HAVING COUNT(DISTINCT NAME)=2
ORDER BY CART_ID
'sql > easy' 카테고리의 다른 글
프로그래머스 Lv 4 - 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2023.07.14 |
---|---|
프로그래머스 Lv 4 - 주문량이 많은 아이스크림들 조회하기 (0) | 2023.07.10 |
프로그래머스 Lv 4 - 저자 별 카테고리 별 매출액 집계하기 (0) | 2023.07.09 |
프로그래머스 Lv 3 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 헤비 유저가 소유한 장소 (0) | 2023.07.03 |
프로그래머스 Lv 4 - 오프라인/온라인 판매 데이터 통합하기 (0) | 2023.07.03 |