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

 

코딩테스트 연습 - 헤비 유저가 소유한 장소

PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를

programmers.co.kr

문제 내용 : 이 서비스에서는 공간을 둘 이상 등록한 사람을 “헤비 유저”라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성하시오.

 

코드풀이:

SELECT *
FROM PLACES
WHERE HOST_ID IN (
    SELECT HOST_ID 
    FROM PLACES
    GROUP BY HOST_ID 
    HAVING COUNT(ID) >= 2)
ORDER BY ID

WHERE 절에 서브쿼리를 만들어 HOST_ID로 묶인 그룹중에서 크기가 2이상인 그룹의 ID 들을 반환해 IN 연산자로 비교했다.

 

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

 

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

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

programmers.co.kr

문제내용: 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.

SELECT A.CART_ID FROM 
 (SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'YOGURT') as A, 
 (SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'MILK') as B
 WHERE A.CART_ID = B.CART_ID
SELECT a.CART_ID
FROM CART_PRODUCTS a JOIN CART_PRODUCTS b ON a.CART_ID = b.CART_ID
WHERE a.NAME = "Milk" AND b.NAME = "Yogurt"
ORDER BY CART_ID;

테이블 두개를 만든후 각 PK로 INNERJOIN 한 인스턴스에서 CART_ID 값을 뽑았다.

검색해보니깐 서브쿼리로 푸는 방법이 있다.

 

 


 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기