[pgs_SQL] 하나의 내부 테이블은 괄호로 묶어주기

Jonas M·2021년 8월 14일
0

Coding Test - SQL

목록 보기
1/1
post-thumbnail

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

SQL을 능숙하게 하지는 못하지만 데이터를 다루는 사람으로서 직접 쿼리문을 작성해서 데이터에 접근 가능한 수준은 되어야 하기 때문에 종종 연습을 하고 있다.
이 문제는 SELECT FROM WHERE ... 등으로 이어지는 하나의 조회문을 다른 쿼리에 넣어줄 때 항상 괄호로 묶어주는 습관을 들이려고 메모해둔다.

Question


Solution

host_id가 두 번 이상 등장했던 사람들이 남긴 정보들을 골라서 테이블을 구성하면 된다.
우선 두 번 이상 등장했던 host_id들을 하나의 테이블로 조회해준다. (내부 SELECT문) 그리고 전체에서 앞서 만들어둔 테이블에 들어있는 host_id가 남긴 정보만 추려서 가져오면 된다.

# 틀린 코드
SELECT *
FROM PLACES
WHERE
host_id in 
  SELECT host_id
  FROM PLACES
  GROUP BY host_id
  HAVING count(host_id)>=2
ORDER BY id

# 옳은 코드
SELECT *
FROM PLACES
WHERE
host_id in 
(SELECT host_id
FROM PLACES
GROUP BY host_id
HAVING count(host_id)>=2)
ORDER BY id

두 개의 코드가 갖는 차이는 오직 괄호 하나 뿐이다. 위 코드에서의 들여쓰기는 가독성을 위해 넣어둔 것이고 실제 코드에는 영향을 주지 않는다.
프로그램은 () 안의 조회문을 하나의 테이블로 인식하는 것 같다. 묶어 주지 않았을 때에는 구분이 되지 않아서 아래처럼 오류가 발생한다.

profile
Graduate School of DataScience, NLP researcher

0개의 댓글