코딩테스트/SQL 코딩테스트

<프로그래머스> 헤비 유저가 소유한 장소

배또가또 2023. 12. 28. 16:41

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/77487

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr



  • 문제 요구사항
    • 서비스에서 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 할 때
    • 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회

공간을 등록한 사람의 ID는 HOST_ID이다.

헤비 유저 조건(공간을 둘 이상 등록한 유저)을 조회하기 위해서 WHERE절에 서브쿼리로 조건을 입력해주기로 한다.

 

PLACES 테이블에서 HOST_ID를 기준으로 GROUP BY 했을 때

COUNT(*)의 수가 2보다 크거나 같은 HOST_ID를 HAVING 절로 조회하면 헤비유저를 조회할 수 있다.

WHERE절에서 작성된서브쿼리에서 다중행이 조회 되기 때문에 다중행 비교 연산자인 IN을 사용한다. 

 

이렇게 조회된 HOST_ID 조건을 만족하는 유저에 대해서 테이블 전체칼럼을 

ID를 기준으로 오름차순 정렬하여 조회한다.


1) Oracle

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

2) MySQL

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