≣ 목차
링크
https://school.programmers.co.kr/learn/courses/30/lessons/62284
문제
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
정답 1
select cart_id
from cart_products
where name = 'Milk'
or name = 'Yogurt'
group by cart_id
having count(distinct name) = 2
order by 1
정답 2
select cart_id
from cart_products
where name = 'Milk'
intersect
select cart_id
from cart_products
where name = 'Yogurt'
정답 3
select distinct a.cart_id
from cart_products a
join cart_products b
on a.cart_id = b.cart_id
where a.name = 'Milk' and b.name = 'Yogurt'
해설
- WHERE와 OR로 우유와 요거트를 구매한 cart_id 구하기
- GROUP BY 와 HAVING을 사용하여 cart_id 구하기
- 궁금증 : count를 cart_id가 아니라 name의 수량을 구한 이유 = 밀크와 요거트 2개만 정확하면 카트 아이디를 추출할 수 있다
- 카트아이디를 기준으로 정렬
새롭게 이해한 내용
장바구니를 구하는 데 집중하여 장바구니의 수량을 구하기보다 그 조건을 생각하여 having절을 활용할 수 있다
'[업무 지식] > MySQL' 카테고리의 다른 글
[JOIN & UNION] 주문량이 많은 아이스크림들 조회하기 (0) | 2024.10.14 |
---|---|
[조건 서브쿼리] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.10.13 |
[DATEDIFF] 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2024.10.10 |
[응용] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2024.10.10 |
연산자 & 구문 & 함수 모음집 (0) | 2024.10.03 |