64번 헤비 유저가 소유한 장소
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
<나의 풀이>
select id,
name,
host_id
from places
where host_id in (
select host_id
from places
group by host_id
having count(*) >= 2)
order by id
1. where coulmn name in 절로 서브쿼리를 이용하여 host_id의 개수가 2이상인 경우를 나타냄
--> where host_id in (
select host_id
from places
group by host_id
having count(*) >= 2)
2. 순서는 아이디 기준으로 오름차순
--> order by id
host_id IN' 절은 서브쿼리 결과를 기반으로 주어진 열에 대한 필터링을 수행하는 방식
이 경우, 서브쿼리는 'places' 테이블에서 그룹화된 'host_id'를 찾고, 해당 'host_id'의 개수가 2 이상인 경우를 반환
서브쿼리의 결과인 여러 'host_id' 값은 'host_id IN' 절을 사용하여 주어진 열에 대한 필터링 조건으로 사용
이렇게 함으로써 'places' 테이블에서 'host_id'가 헤비 유저에 해당하는 레코드만 선택됨
즉, 'host_id IN' 절은 메인 쿼리에서 서브쿼리 결과를 기반으로 조건을 설정하여 원하는 결과를 필터링하는 역할을 수행
이 경우, 'host_id'가 서브쿼리 결과에 속하는 레코드들만 선택하여 반환
따라서 'host_id IN' 절을 사용하여 헤비 유저가 등록한 공간의 정보를 선택하는 것은 헤비 유저의 'host_id'를 기준으로 필터링하여 원하는 결과를 얻기 위한 방법
참조: https://school.programmers.co.kr/questions/50015
다른 사람들의 풀이를 보다가 어떤 분께서 where in 서브쿼리 절에 대해 잘 설명을 해주셔서 가져왔다.
나도 이 문제를 풀면서 전 문제들 중에서도 where in 서브쿼리 문으로 푼 기억이 있어 찾아보며 풀었는데 솔직히 제대로 이해가 되지 않았었다. 그러다가 다른 분들은 어떻게 풀었는지 보다가 이 분께서 잘 설명해주셔서 한 번에 이해가 됐다!
SQL도 풀면 풀수록 실력이 늘고 있는 것 같은데 또 쉽게 기억이 안나는 부분도 있어서 정말 복습! 노력!이 중요할 것 같다!!
여튼 오늘도 잘 풀어서 굳
'CODEKATA' 카테고리의 다른 글
[MySQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.07.25 |
---|---|
[Python] 핸드폰 번호 가리기 (0) | 2024.07.22 |
[MySQL] 자동차 평균 대여 기간 구하기 (0) | 2024.07.22 |
[Python] 음양 더하기 (0) | 2024.07.19 |
[MySQL] 서울에서 위치한 식당 목록 출력하기 (0) | 2024.07.19 |