기록

프로그래머스_우유와 요거트가 담긴 장바구니 본문

코딩테스트/SQL

프로그래머스_우유와 요거트가 담긴 장바구니

youngyin 2021. 1. 25. 20:30

문제

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

 

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

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

programmers.co.kr

풀이

DISTINCT는 중복을 제거하기 위해 사용하며 해당 컬럼에 대해서 유일한 레코드만 선택할 수 있다.

SELECT DISTINCT 컬럼명1, 컬럼명2....
FROM 테이블명
WHERE 컬럼명 IN (값1, 값2, 값3...);

SELECT SUM(DISTINCT 컬럼명1), 컬럼명2....
FROM 테이블명
WHERE 컬럼명 IN (값1, 값2, 값3...);

코드

-- WHERE
SELECT DISTINCT CART_ID
FROM CART_PRODUCTS
WHERE 
    CART_ID IN (SELECT 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;

-- INNER JOIN(1)
SELECT DISTINCT Milk.cart_id
FROM (SELECT * FROM CART_PRODUCTS WHERE NAME='Milk') Milk 
INNER JOIN (SELECT * FROM CART_PRODUCTS WHERE NAME='Yogurt') Yogurt
ON Milk.CART_ID = Yogurt.CART_ID;

-- INNER JOIN(2)
SELECT DISTINCT Milk.cart_id
FROM (SELECT * FROM CART_PRODUCTS WHERE NAME='Milk') AS Milk 
INNER JOIN (SELECT * FROM CART_PRODUCTS WHERE NAME='Yogurt') AS Yogurt
ON Milk.CART_ID = Yogurt.CART_ID;

 

 

Comments