본문 바로가기

TIL 통합/SQL

[프로그래머스] 우유와 요거트가 담긴 장바구니(GROUP_CONCAT or HAVING 활용)

https://school.programmers.co.kr/learn/courses/30/lessons/62284

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

GROUP_CONCAT으로 쉽게 풀었던 문제.

예전에는 UNION으로 좀 더 길게 풀었는데, 장바구니 이력이 여러번 있는 경우가 있으니 DISTINCT든 다른 방식으로든 중복을 제거해 주는 것이 포인트인듯 하다.

 

SELECT      CART_ID
FROM        (
                    SELECT       CART_ID
                                ,GROUP_CONCAT(NAME) NAME
                    FROM         CART_PRODUCTS
                    WHERE        NAME = 'Milk'
                    OR           NAME = 'Yogurt'
                    GROUP BY     CART_ID
            ) A
WHERE       NAME LIKE '%Milk%Yogurt'
OR          NAME LIKE '%Yogurt%Milk'
ORDER BY    1

 

 

 

 

 

 

with temp as (
select distinct(cart_id)
from cart_products
where name = 'yogurt'
union all
select distinct(cart_id)
from cart_products
where name = 'milk')

select cart_id
from temp
group by 1
having count(*) >=2