헤비 유저가 소유한 장소

김채윤·2026년 3월 30일

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

문제
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.

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

이렇게 허면 당연히 하나의 ID밖에 출력이 안 된다.
그럴 때는 서브쿼리를 활용

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

이건 또 에러가 난다...
서브 쿼리 안에서 ID 개수가 2개 이상인 HOST_ID를 여러 개 뽑아뒀는데, 그 여러 개랑 HOST_ID가 같은 조건을 거니까 에러가 난다...
서브쿼리의 결과가 딱 하나가 나올 때는 에러 없이 가능하지만 여러 개가 나와서 여러 개와 하나를 같다고 할 수 없는 것..!

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

= 대신 IN을 써서 HOST_ID를 미리 뽑아 두고 그 중 HOST_ID가 일치하는 애들을 조건으로 걸어주면 된다.

0개의 댓글