웹 프로그래밍/SQL

[sql] 우유와 요거트 모두 산 사람 찾기 with tmp를 이용해서 품

mcdn 2021. 9. 15. 15:18
반응형

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

 

코딩테스트 연습 - 우유와 요거트가 담긴 장바구니

CART_PRODUCTS 테이블은 장바구니에 담긴 상품 정보를 담은 테이블입니다. CART_PRODUCTS 테이블의 구조는 다음과 같으며, ID, CART_ID, NAME, PRICE는 각각 테이블의 아이디, 장바구니의 아이디, 상품 종류, 가

programmers.co.kr

-- 코드를 입력하세요
WITH tmp as (
    SELECT *
    FROM cart_products
    WHERE NAME = 'Milk'
)

SELECT distinct cart_id
FROM tmp 
WHERE tmp.cart_id in (
    SELECT cart_id
    FROM cart_products
    WHERE NAME='Yogurt'
)

맞아서 신기했음.. 

ㅋㅋㅋㅋㅋ

 

 

더 깔끔한 모범코드들 

SELECT DISTINCT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Yogurt' AND CART_ID IN (
    SELECT CART_ID
    FROM CART_PRODUCTS
    WHERE NAME = 'Milk'
)
ORDER BY CART_ID;
SELECT a.cart_id
from cart_products as a, cart_products as b
where a.cart_id=b.cart_id and a.name='milk' and b.name='yogurt'
order by a.cart_id;

 

https://programmers.co.kr/questions/20479

 

프로그래머스

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

programmers.co.kr

3가지 방법 있다고 함 

 

SELECT cart_id from(select cart_id, group_concat(distinct name) as NAME 
from cart_products group by cart_id) st
 where NAME like '%Milk%' and NAME like '%Yogurt%'
 order by cart_id;

 

 

반응형