Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- WORK폴더
- Tomcat
- Spring #Scheduler #JAVA
- 객체정렬 #Java8
- 인스턴스오류 #Tomcat #mysql
- 바인딩
- Integer
- 인터페이스
- 서터 세팅이 잘못인가
- ROLLUP#합계
- dockerfile #dockerrun #빌드
- 클래스명
- 클래스
- Spring REST Docs #Swagger #JAVA #REST API
- ArrayList
- 자바프로그래밍
- 클래스명과 파일명 동일한 이유
- JSON #javascript
- sql린이#공부중
- 근데왜지
- 나중에도 같은문제면 이렇게 시도해봐야겠다
- 서버이전
- Java
- list
- 포트폴리오 작성
- iBATIS
- 개발자포트폴리오
- 오류해결
- brew #mariadb #Django #Python
- aws #ec2 #instance #클라우드 #cloud #it
Archives
- Today
- Total
HoneyBee
Mysql 코딩테스트 연습 in 프로그래머스' 본문
문제 : 헤비 유저가 소유한 장소
문제 설명
PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 나타냅니다. ID는 기본키입니다.
NAMETYPE
ID | INT |
NAME | VARCHAR |
HOST_ID | INT |
문제
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
예시
예를 들어, PLACES 테이블이 다음과 같다면
IDNAMEHOST_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 문을 실행하면 다음과 같이 나와야 합니다.
IDNAMEHOST_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 |
내가 작성한 쿼리문
select
p.id,
p.name,
p.host_id
from
places p
where
p.host_id in (
select
t.host_id
from
(
select
host_id,
count(host_id) as cnt
from
places
group by
host_id ) t
where
t.cnt >= 2 )
설명 :
- places 테이블에서 id, name, host_id 를 조회해야하는데 조회하는 조건에서 host_id가 두개 이상인 id,name,host_id 데이터를 조회해야한다.
- 그래서 where 조건 안에서 p.host_id를 사용하여 in 구문안에 이중 서브쿼리(그냥 내가 지은 말인데 있으려나 모르겠네)를 활용해서 host_id가 2개 이상인 헤비유저의 host_id 를 찾아 조회하게 만든다.
느낀점 :
- 솔직히 학교에서 배운 쿼리보다 요즘 회사에서 막 부딪혀 가면서 쿼리 짜고 있는데 그러다가 프로그래머스를 접해서 풀게되었다보니 그냥 설렁설렁하는 것보다 내 밥벌이랑 연관되서 공부해서 그런지 더욱 열심히하게 되고 재밌다. ㅋㅋㅋㅋ 끄읏
**문제 출처
문제 : 헤비유저가 소유한 장소
'SQL > Mysql' 카테고리의 다른 글
Mysql rollup 사용시 주의사항 (0) | 2021.05.10 |
---|