SQL 알고리즘 코드카타

SQL 알고리즘 코드카타 20일차(5) 26.01.18(일)

nom_de_plume 2026. 1. 18. 21:56

부제:

헤비 유저가 소유한 장소, 레벨 4

 

1. 문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/77487
2. 정답 코드: 

SELECT 
    ID, 
    NAME, 
    HOST_ID
FROM PLACES
WHERE HOST_ID IN (
    SELECT HOST_ID
    FROM PLACES
    GROUP BY host_id
    HAVING COUNT(host_id) >= 2
)
ORDER BY ID;


3. 오류 상황:

SELECT
    id,
    name,
    host_id
from places
having count(distinct host_id) >= 2
order by id;

=> having 절 문제

=> 서브쿼리 미활용


4. 시도 방법:

=> 서브쿼리 활용


5. 최종 문제 해결 방법:

=> HAVING은 반드시 GROUP BY와 함께 사용되어 그룹화된 결과에 조건을 걸 때 쓴다.

=> 서브쿼리를 활용해 places 테이블에서 host_id로 그룹을 묶어, 개수가 2개 이상인 host_id 목록만 뽑아낸다. (이게 바로 헤비 유저 명단.) 그 후 전체 places 테이블에서 host_id가 위에서 뽑은 명단에 포함(IN)되는 데이터만 조회