데이터사이언스 기록기📚

[프로그래머스/SQL] Level 4_우유와 요거트가 담긴 장바구니(Summer/Winter Coding (2019)) 본문

Coding Test/프로그래머스(SQL)

[프로그래머스/SQL] Level 4_우유와 요거트가 담긴 장바구니(Summer/Winter Coding (2019))

syunze 2023. 10. 7. 10:12

📌문제 유형

Summer/Winter Coding (2019)

 

📌문제

 

프로그래머스

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

programmers.co.kr

 

📌나의 문제풀이

- 요거트만 있는 것, 우유만 있는 것 각각 추출해서 공통 부분만 나타내기

SELECT A.CART_ID
FROM (SELECT DISTINCT CART_ID,NAME
	FROM CART_PRODUCTS 
	WHERE NAME IN ('Yogurt')
	ORDER BY CART_ID) AS A INNER JOIN
	(SELECT DISTINCT CART_ID,NAME
	FROM CART_PRODUCTS 
	WHERE NAME IN ('Milk')
	ORDER BY CART_ID) AS B ON A.CART_ID = B.CART_ID
ORDER BY A.CART_ID

 

📌다른사람의 문제풀이

SELECT CART_ID
FROM (
    SELECT DISTINCT CART_ID
    FROM CART_PRODUCTS
    WHERE NAME='Milk'
    UNION ALL
    SELECT DISTINCT CART_ID
    FROM CART_PRODUCTS
    WHERE NAME='Yogurt'
    ) T
GROUP BY CART_ID
HAVING COUNT(CART_ID)=2
ORDER BY 1
WITH TEMP AS (
    SELECT DISTINCT CART_ID, NAME
    FROM CART_PRODUCTS 
    WHERE NAME = 'Milk'
    UNION ALL 
    SELECT DISTINCT CART_ID, NAME
    FROM CART_PRODUCTS 
    WHERE NAME = 'Yogurt'
)
SELECT CART_ID
FROM TEMP
GROUP BY CART_ID
HAVING COUNT(NAME) >= 2

 

📌리뷰

- WITH : 임시테이블 만들기

 

[MYSQL] 📚 WITH (임시 테이블 생성)

WITH (임시 테이블) SQL을 통해 빅데이터라 불리는 매우 크고 무거운 데이터를 다루는데, 새로운 결과를 원하고 저장할 때마다 table을 저장할 수 없다. 또한, 실무에서는 실제 실행 속도도 빠르게

inpa.tistory.com

- UNION ALL : 중복 포함 / UNION DISTINCT : 중복 제거

728x90
Comments