IT/SQL

[MySQL] 프로그래머스 - 헤비 유저가 소유한 장소

무지개는 환상 2024. 1. 24. 09:55

<PLACES> 테이블 구조

PLACES 테이블

 

<문제>

 

 

 

<문제 풀이>

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

 

WHERE COUNT(HOST_ID) >= 2 만 있는 3줄짜리 SQL 문으로 간단하게 생각이 들었으나

생각해보니 그러면 'PLACES 테이블에서 host_id 컬럼의 count 값이 2 이상이면 모든걸 다 출력해줘' 가 되는 상황이었다.

이래서 집계함수 (count 함수 같은) 는 where 절에 쓸 경우 group 절을 사용해야 하는구나 를 다시 한번 느꼈다!

그래서 where 절에 GROUP 과 HAVING을 사용한 서브쿼리를 사용하였다. 

 

* 집계 함수 : SUM() , COUNT(), MIN(), MAX() 함수 같은 통계관련 함수

 

출처 : 프로그래머스 - 헤비 유저가 소유한 장소