SQL 문제풀이
[프로그래머스 SQL] LV.4 우유와 요거트가 담긴 장바구니
냄비짱
2023. 8. 6. 02:30
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 추출