728x90
❓ Question
❗ Answer
# GROUP_CONCAT 활용
SELECT cart_id
FROM cart_products
GROUP BY cart_id
HAVING GROUP_CONCAT(name) LIKE '%Milk%'
AND GROUP_CONCAT(name) LIKE '%Yogurt%'
ORDER BY cart_id;
# sub query 활용
SELECT DISTINCT cart_id
FROM cart_products
WHERE name = 'Milk'
AND cart_id in (SELECT cart_id FROM cart_products WHERE name = 'Yogurt')
ORDER BY cart_id;
# IN, DISTNICT 활용
SELECT cart_id
FROM cart_products
WHERE name IN ('Milk', 'Yogurt')
GROUP BY cart_id
HAVING COUNT(DISTINCT name) >= 2
ORDER BY cart_id;
📌 Discussion
group_concat 활용
group_concat으로 car_id 별로 모든 제품을 다 합친 후에 두가지를 모두 포함한 장바구니를 추출
sub-query 활용
sub query로 name에 'Yogurt'가 포함된 cart_id 추출 후
main query에서 해당하는 cart_id 중 'Milk'가 포함된 cart_id 추출
in, distinct 활용
name이 주어진 조건인 모든 cart_id 추출 후
HAVING으로 중복되지 않은 name이 2이상('Milk', 'Yogurt'가 모두 들어있는)인 cart_id 추출
'SQL 문제풀이' 카테고리의 다른 글
[프로그래머스 SQL] LV.4 주문량이 많은 아이스크림들 조회하기 (0) | 2023.08.06 |
---|---|
[프로그래머스 SQL] LV.1 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.08.06 |
[프로그래머스 SQL] LV.3 헤비 유저가 소유한 장소 (0) | 2023.08.06 |
[프로그래머스 SQL] LV.2 자동차 평균 대여 기간 구하기 (0) | 2023.08.06 |
[프로그래머스 SQL] LV.4 취소되지 않은 진료 예약 조회하기 (0) | 2023.08.06 |