Study/코딩테스트
[프로그래머스 / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / SQL ] 헤비 유저가 소유한 장소
까다로운오리
2022. 2. 17. 04:11
문제
https://programmers.co.kr/learn/courses/30/lessons/77487#_=_
코딩테스트 연습 - 헤비 유저가 소유한 장소
PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를
programmers.co.kr
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
풀이 코드
SELECT *
FROM PLACES
WHERE HOST_ID IN
(SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(HOST_ID)>=2)
ORDER BY ID
풀이 과정
1. 출력되는 값은 ID, NAME, HOST_ID 이고 PLACES라는 테이블에서 다음 열들을 가져 온다.
2. 문제 조건은 HOST_ID의 갯수가 2 이상인 값들만 출력하도록 되어있기 때문에 HOST_ID값이 2 이상인 HOST_ID값을 가져오기 위해 서브 쿼리를 만든다. 해서 HOST_ID값 중 서브쿼리에 속해있는 값만 출력되도록 WHERE문에 조건을 써 넣는다.
3. ID순으로 조회해야되기 때문에 ORDER BY ID를 해준다.
서브쿼리
1. HOST_ID값을 카테고리 값 별로 COUNT 하기위해 HOST_ID의 값을 GROUP BY로 묶는다.
2. COUNT는 집계 함수로 '공간을 둘 이상 등록한 사람을 "헤비 유저"' 라고 칭하기 때문에 HAVING절에 COUNT(HOST_ID) 한 값이 2 이상인 경우만 SELECT 하는 조건식을 세워준다.
끝!