
SELECT DISTINCT CART_ID
FROM CART_PRODUCTS
WHERE NAME = 'Milk' and CART_ID IN (Select C.CART_ID FROM CART_PRODUCTS as C WHERE NAME = 'Yogurt')
ORDER BY CART_ID;
A와 B를 동시에 구입한 장바구니가 있는지 알아보는, 대표적인 연관분석 문제였다. SQL에서 연관분석을 해보리란 생각은 안 해봤는데 (맨날 R에서만 해봤음) 생각보다 간단하게 중첩쿼리문으로 해결했다.
SELECT P.CART_ID
FROM CART_PRODUCTS as P, CART_PRODUCTS as C
WHERE P.CART_ID = C.CART_ID and P.name = 'Milk' and C.name = 'Yogurt'
ORDER BY P.CART_ID;
일종의 재귀호출(조인)을 이용한 또 다른 방법도 있었다. 데이터베이스 배울 때 Employee 테이블에서 많이 썼던 방법인데, 직원들의 상사(Supervisor)를 구하기 위해 Employee as E, Employee as S 로 두 테이블을 조인했던 기억이 난다. 같은 방법으로 CART_PRODUCTS를 P, C 두 개의 독립적인 테이블로 나눠 조인작업하면 간단하게 처리할 수 있다.
아직 DB설계를 수강중이라 조인 vs 중첩쿼리 문 중에 어떤 것의 계산효율이 더 좋을지는 모르겠다.
'Problem Solving > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 기둥과 보 설치(python) - 2020 카카오 신입 공채 (0) | 2021.06.06 |
|---|---|
| [프로그래머스] 자물쇠와 열쇠(python) - 2020 카카오 신입 공채 (0) | 2021.06.06 |
| [SQL고득점Kit] 프로그래머스 JOIN, String, Date (0) | 2021.02.19 |
| [SQL고득점Kit] 프로그래머스 GROUP BY, IS NULL (0) | 2021.02.19 |
| [SQL고득점Kit] 프로그래머스 SUM, MAX, MIN문 (0) | 2021.02.13 |