[프로그래머스] 헤비 유저가 소유한 장소 - SQL

Donghyun·2024년 7월 22일
0

Code Kata - SQL

목록 보기
22/61
post-thumbnail

링크: https://school.programmers.co.kr/learn/courses/30/lessons/77487

문제 설명

PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 IDNAMEHOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 나타냅니다. ID는 기본키입니다.

NAMETYPE
IDINT
NAMEVARCHAR
HOST_IDINT

문제

이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.

예시

예를 들어, PLACES 테이블이 다음과 같다면

IDNAMEHOST_ID
4431977BOUTIQUE STAYS - Somerset Terrace, Pet Friendly760849
5194998BOUTIQUE STAYS - Elwood Beaches 3, Pet Friendly760849
16045624Urban Jungle in the Heart of Melbourne30900122
17810814Stylish Bayside Retreat with a Luscious Garden760849
22740286FREE PARKING - The Velvet Lux in Melbourne CBD30900122
22868779★ Fresh Fitzroy Pad with City Views! ★21058208
  • 760849번 유저는 공간을 3개 등록했으므로 이 유저는 헤비유저입니다.
  • 30900122번 유저는 공간을 2개 등록했으므로 이 유저는 헤비유저입니다.
  • 21058208번 유저는 공간을 1개 등록했으므로 이 유저는 헤비유저가 아닙니다.

따라서 SQL 문을 실행하면 다음과 같이 나와야 합니다.

IDNAMEHOST_ID
4431977BOUTIQUE STAYS - Somerset Terrace, Pet Friendly760849
5194998BOUTIQUE STAYS - Elwood Beaches 3, Pet Friendly760849
16045624Urban Jungle in the Heart of Melbourne30900122
17810814Stylish Bayside Retreat with a Luscious Garden760849
22740286FREE PARKING - The Velvet Lux in Melbourne CBD30900122

문제풀이

  • PLACES 테이블에서
  • HOST_ID 가 두 번 이상 나타나는 유저들(헤비유저)에 대한 정보만 조회해야 한다.
    • 이 때 WHERE 절에서 서브쿼리를 사용:
      • PLACES 테이블에서
      • HOST_ID 를 기준으로 GROUP BY
      • 이 때 COUNT(HOST_ID) 가 2 이상이 테이블만 조회
      • 마지막으로 HOST_ID 를 SELECT
  • 서브쿼리를 완료했다면 ID, NAME, HOST_ID 를 SELECT 하고
  • ID 를 기준으로 오름차순 정렬!

최종코드

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 ASC;
profile
데이터분석 공부 일기~!

0개의 댓글