본문 바로가기

프로그래머스(Oracle)

[프로그래머스 (Oracle)] 헤비 유저가 소유한 장소

728x90

코드 힌트

  1. 서브 쿼리 사용:
    • GROUP BY와 HAVING 절을 사용하여 2개 이상의 장소를 등록한 호스트를 구합니다.
    • 이 서브 쿼리의 결과와 PLACES 테이블을 JOIN하여 해당 호스트의 모든 장소를 가져옵니다.
  2. GROUP BY와 HAVING 활용:
    • GROUP BY는 동일한 호스트에 등록된 장소들을 그룹화합니다.
    • HAVING COUNT(*) > 1은 그룹 내에 2개 이상의 장소가 있는 호스트만 필터링합니다.
  3. JOIN을 사용해 조건 매칭:
    • 메인 쿼리에서는 PLACES 테이블과 2개 이상의 장소를 등록한 호스트의 정보를 JOIN합니다.
  4. 정렬 조건:
    • 결과를 ID 기준으로 정렬하여 보기 쉽게 정렬합니다.

 


정답은 더보기 클릭

더보기
더보기
SELECT P.ID, P.NAME, P.HOST_ID  -- 장소의 ID, 이름, 호스트 ID 조회
  FROM PLACES P
   JOIN (
         SELECT HOST_ID           -- 호스트 ID 추출
           FROM PLACES
          GROUP BY HOST_ID        -- 각 호스트별로 그룹화
          HAVING COUNT(*) > 1     -- 장소를 2개 이상 등록한 호스트만 선택
        ) AS H
   ON P.HOST_ID = H.HOST_ID       -- 2개 이상 장소를 등록한 호스트와 매칭
  ORDER BY P.ID                   -- ID 기준으로 결과 정렬
728x90