본문 바로가기
PS/SQL

[SQL] 우유와 요거트가 담긴 장바구니

by 행복한라이언 2024. 2. 12.
728x90
반응형

문제링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 핵심

  • 교집합을 활용한 풀이
    • 방법1. milk, yogurt 테이블을 각각 만들어서 inner join하는 풀이 + inner join의 경우 중복된 id를 처리하기 위해서 distinct
    • 방법2. 집합연산사 intersect를 사용해서 우유와 요거트가 모두 있는 id 구하기 
728x90

2. 코드(MySQL)

-- 코드를 입력하세요
# 우유와 요거트 동시 구입한 장바구니
# 장바구니의 id 조회
# id 순으로 오름차순
with milk as (
    select CART_ID
    from CART_PRODUCTS
    where NAME in ('Milk')
),
yogurt as (
    select CART_ID
    from CART_PRODUCTS
    where NAME in ('Yogurt')
)

select distinct(M.CART_ID)
from milk M
inner join yogurt Y on M.CART_ID = Y.CART_ID
order by M.CART_ID asc;

with temp as (
    select CART_ID
    from CART_PRODUCTS
    where NAME in ('Milk')
    
    intersect
    
    select CART_ID
    from CART_PRODUCTS
    where NAME in ('Yogurt')
    
)

select CART_ID
from temp
order by CART_ID;
728x90
반응형