반응형
SELECT ID, NAME, HOST_ID
FROM PLACES
WHERE HOST_ID in (SELECT HOST_ID
FROM PLACES
GROUP BY 1
HAVING COUNT(HOST_ID)>=2)
ORDER BY 1
문제
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성
조건 자체가 적어서 어렵지는 않다. 하지만 Where in 에 대한 개념이 조금 부족하면 어려울 수 있다.
일단 공간을 둘 이상 등록 한 사람이다. HOST_ID가 >=2 가 되어야 하는 조건을 가져야 한다 (공간 마다 아이디가 마킹되어 있으므로 아이디의 개수가 곧 공간의 개수). 이 조건을 메인쿼리에서 바로 적용하기는 어려우므로 서브쿼리를 작성해 사용해 준다. 서브쿼리에서 HOST_ID 기준으로 GROUP 처리를 해준다. 그후 HAVING 조건으로 필터링 하면 공간이 2개이상인 아이디 값이 서브쿼리 컬럼에 남는다. 그 후 메인쿼리와 연결할때 in 을 써준다. 이퀄(=) 을 써주게 되면 단 하나의 값만 비교 하게되므로 오류가뜬다. 아마 무지성으로 이퀄 조건문을 쓰고 왜 안되냐고 골머리를 앓는 초보들도 많을 것이다...(저도.. 마찬가지..였습니다) in 조건문은 or와 사실상 동일하여 해당 아이디 값들이 포함된 녀석들을 필터링 할수 있게 해준다. 그 후 ORDER BY로 정렬해서 값을 추출 해주면 끝이난다.. 간단하다..
반응형
'SQL > MY SQL 문제 풀이(프로그래머스)' 카테고리의 다른 글
[MYSQL] PROGRAMMERS_보호소에서 중성화한 동물 (1) | 2024.02.23 |
---|---|
[MYSQL] PROGRAMMERS_대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2024.02.23 |
[MYSQL] PROGRAMMERS_조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.02.23 |
[MYSQL] PROGRAMMERS_자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2024.02.23 |
[MYSQL] PROGRAMMERS_조건에 맞는 사용자 정보 조회하기 (0) | 2024.02.23 |