문제. 프로그래머스 2021 Dev-Matching 헤비 유저가 소유한 장소
문제 설명
PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 나타냅니다. ID는 기본키입니다.
NAME | TYPE |
ID | INT |
NAME | VARCHAR |
HOST_ID | INT |
문제
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
예시
예를 들어, PLACES 테이블이 다음과 같다면
ID | NAME | HOST_ID |
4431977 | BOUTIQUE STAYS - Somerset Terrace, Pet Friendly | 760849 |
5194998 | BOUTIQUE STAYS - Elwood Beaches 3, Pet Friendly | 760849 |
16045624 | Urban Jungle in the Heart of Melbourne | 30900122 |
17810814 | Stylish Bayside Retreat with a Luscious Garden | 760849 |
22740286 | FREE PARKING - The Velvet Lux in Melbourne CBD | 30900122 |
22868779 | ★ Fresh Fitzroy Pad with City Views! ★ | 21058208 |
- 760849번 유저는 공간을 3개 등록했으므로 이 유저는 헤비유저입니다.
- 30900122번 유저는 공간을 2개 등록했으므로 이 유저는 헤비유저입니다.
- 21058208번 유저는 공간을 1개 등록했으므로 이 유저는 헤비유저가 아닙니다.
따라서 SQL 문을 실행하면 다음과 같이 나와야 합니다.
ID | NAME | HOST_ID |
4431977 | BOUTIQUE STAYS - Somerset Terrace, Pet Friendly | 760849 |
5194998 | BOUTIQUE STAYS - Elwood Beaches 3, Pet Friendly | 760849 |
16045624 | Urban Jungle in the Heart of Melbourne | 30900122 |
17810814 | Stylish Bayside Retreat with a Luscious Garden | 760849 |
22740286 | FREE PARKING - The Velvet Lux in Melbourne CBD | 30900122 |
출처 : 프로그래머스 헤비 유저가 소유한 장소
▣ 나의 풀이 in MySQL
SELECT ID, NAME, HOST_ID
FROM PLACES
WHERE HOST_ID IN (SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(HOST_ID) >= 2)
ORDER BY ID;
▣ 문제 풀이
숨어 있는 조건(헤비 유저)을 충족하는 컬럼들(ID, NAME, HOST_ID)을 조회하라는 문제입니다.
이러한 유형의 문제는 조건문에 서브 쿼리를 활용하면 쉽게 풀 수 있습니다.
공간을 2개 이상 등록한 HOST_ID 목록을 서브 쿼리 테이블로 만들고
WHERE문에서 이 목록에 대응하는 HOST_ID가 있는 행만 조회하고 ID로 정렬시키면 끝.
반응형
'Tests > 프로그래머스' 카테고리의 다른 글
[Programmers] 로또의 최고 순위와 최저 순위 in Python (0) | 2021.07.25 |
---|---|
[Programmers] 2021 카카오 코딩테스트 > 순위 검색 (파이썬) (2) | 2021.06.05 |
[Programmers] 프로그래머스 파이썬 배달 (0) | 2021.06.05 |
[Programmers] 프로그래머스 파이썬 > 2020 카카오 코딩테스트 괄호 변환 (0) | 2021.05.08 |
[Programmers] 프로그래머스 거스름돈 파이썬 (0) | 2021.04.21 |
댓글