CODEKATA SQL

COZY·2024년 5월 21일

CODEKATA

목록 보기
9/11
post-thumbnail

헤비 유저가 소유한 장소

✔️문제 포인트
1. 공간을 둘 이상 등록(=host별 갯수가 2개 이상)
2. 공간의 정보를 출력 (=모든 컬럼 출력)
3. id순으로 조회 (기본 asc)

💟풀이

SELECT *
from places p
where host_id in (select host_id
                  from places
                  group by host_id
                  having count(host_id)>=2)
#group별 조건에 해당하는 모든 정보를 출력해야 하기 때문에 조건절 안에 서브쿼리를 사용하는 중첩조건을 사용.
#group을 통해 host_id을 묶고, having을 통해 아이디의 갯수를 count한다 (=게시글을 쓴 수)
#이후 해당 host_id가 조건 서브쿼리에 속해있으면 (in subquery) 모든 정보를 출력하게 한다.
order by id

➰사용한 기능
1. 조건절의 서브쿼리
주로 전체 결과를 조회해야 하는데, 그룹 조건을 사용해야 할 경우에 이용하곤 한다.
전체 결과에서 group by를 사용하면, 출력이 group별로 지정되기 때문에, 전체 결과를 보기 어렵다.
이때 서브쿼리를 이용하여 group조건을 지정해주고,
이후 메인 쿼리에서 where조건에 해당하는 컬럼이
서브쿼리 안에 있는 경우라는 조건을 주면 주어진 모든 조건을 만족할 수 있다.

profile
데이터분석 공부하는 비전공자

0개의 댓글