Algorithm/Programmers SQL
[MySQL] 프로그래머스 헤비 유저가 소유한 장소
제우제우
2024. 9. 16. 19:50
https://school.programmers.co.kr/learn/courses/30/lessons/77487
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코딩테스트 연습 > 2021 Dev-Matching: 웹 백엔드 개발자(상반기) > 헤비 유저가 소유한 장소
문제 분석
난이도: LEVEL3
문제 요구사항
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다.
헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
정답 코드1
WITH HEAVY_USER AS (
SELECT HOST_ID, COUNT(*) COUNT
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT >= 2
)
SELECT ID, NAME, HOST_ID
FROM PLACES
WHERE HOST_ID IN (SELECT HOST_ID
FROM HEAVY_USER)
ORDER BY 1
CTE를 통해서 먼저 헤비 유저를 구한다.
PLACES 테이블에서 HOST_ID 가 헤비 유저인 공간 정보를 공간 ID를 기준으로 오름차순 정렬하여 보여준다.
정답 코드2
SELECT ID, NAME, P.HOST_ID
FROM PLACES P JOIN (SELECT HOST_ID, COUNT(*) COUNT
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT >= 2) H
ON P.HOST_ID = H.HOST_ID
ORDER BY 1
FROM 절에서 서브쿼리를 통해 공간을 2개이상 가지는 헤비유저를 구하고
유저의 HOST_ID를 통해 PLACES 테이블과 조인을 하고 정보를 출력한다.