본문 바로가기
빅데이터 공부/SQL

[프로그래머스 / MySQL / Lv.3 헤비 유저가 소유한 장소]

by waggish 2025. 3. 6.
  • 문제설명


  • 문제


  • 방법1(JOIN)

1. 헤비 유저 찾기(서브쿼리)

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

👉 HOST_ID별 공간 개수 계산 후, 2개 이상 등록한 HOST_ID만 선택(HAVING COUNT(HOST_ID) >=2)

📌 HAVING 절을 사용한 이유: 집계 함수(SUM, AVG, COUNT, MAX, MIN 등)를 사용한 결과에 조건을 걸 때 주로 사용

 

2. 서브쿼리에서 찾은 HOST_ID를 갖고 있는 PLACES 데이터를 조회하기 위해 JOIN 후 정렬

SELECT P.ID, P.NAME, P.HOST_ID
FROM PLACES P
JOIN(SELECT HOST_ID
     FROM PLACES
     GROUP BY HOST_ID
     HAVING COUNT(HOST_ID) >=2) H
ON P.HOST_ID = H.HOST_ID
ORDER BY P.ID;

  • 방법2(IN 서브쿼리)
SELECT ID, NAME, HOST_ID
FROM PLACES
WHERE HOST_ID IN (SELECT HOST_ID
    		  FROM PLACES
    		  GROUP BY HOST_ID
    		  HAVING COUNT(ID) >= 2)
ORDER BY ID ASC;

👉 똑같이 헤비유저를 찾지만 그 조건을 IN을 사용하여 WHERE절로 조건을 걸어주고 정렬


  • 실행결과