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 테이블과 조인을 하고 정보를 출력한다.