부제:
헤비 유저가 소유한 장소, 레벨 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)되는 데이터만 조회
'SQL 알고리즘 코드카타' 카테고리의 다른 글
| SQL 알고리즘 코드카타 21일차(2) 26.01.19(월) (0) | 2026.01.19 |
|---|---|
| SQL 알고리즘 코드카타 21일차(1) 26.01.19(월) (0) | 2026.01.19 |
| SQL 알고리즘 코드카타 20일차(4) 26.01.18(일) (0) | 2026.01.18 |
| SQL 알고리즘 코드카타 20일차(3) 26.01.18(일) (1) | 2026.01.18 |
| SQL 알고리즘 코드카타 20일차(2) 26.01.18(일) (1) | 2026.01.18 |