이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
문제링크
조건정리
풀이
나는 이런 종류의 문제가 항상 너무 헷갈리는 것 같은데, 맨날 이런식으로 쿼리를 작성하게 되기 때문이다
-- 오답
SELECT *
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(HOST_ID) >= 2
ORDER BY ID
"헤비 유저"의 아이디만 구한 거기 때문에, 거기에 해당하는 룸 전체를 보는 게 아니라 룸 하나만 보임(groupby 했으니까) > host_id당 1줄
헤비 유저의 "방 리스트"를 보는 게 중점이기때문에 WHERE 절에서 JOIN을 하든, CTE를 쓰든 해야함
WITH cnt AS(
SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(*) >= 2)
SELECT p.*
FROM PLACES p
INNER JOIN cnt c ON c.HOST_ID = p.HOST_ID
ORDER BY p.ID