취미가 좋다

헤비 유저가 소유한 장소 본문

SQL 문제풀이/프로그래머스

헤비 유저가 소유한 장소

benlee73 2021. 8. 12. 20:14

https://programmers.co.kr/learn/courses/30/lessons/77487

 

코딩테스트 연습 - 헤비 유저가 소유한 장소

PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를

programmers.co.kr

SELECT *
FROM PLACES
WHERE HOST_ID IN (
    SELECT HOST_ID
    FROM PLACES
    GROUP BY HOST_ID
    HAVING COUNT(ID)>1)
ORDER BY ID

WHERE ... IN ... 을 사용한다.

GROUP BY ... HAVING 절을 사용하여 HOST_ID가 여러 개인  HOST_ID 를 찾아낸다.

그것을 서브쿼리로 하여 찾아낸 HOST_ID를 가지는 정보를 표시한다.

 

SELECT *
FROM PLACES P1
WHERE EXISTS(
    SELECT 1
    FROM PLACES P2
    WHERE P1.HOST_ID = P2.HOST_ID
    GROUP BY HOST_ID
    HAVING COUNT(HOST_ID) > 1
)
ORDER BY ID

EXISTS 는 서브 쿼리의 결과가 존재하면 TRUE, 아니면 FALSE를 반환한다.

SELECT 1 은 크게 의미는 없고, TRUE를 대체한다고 볼 수 있다. 테이블 크기만큼 1을 보여준다.

위의 IN 보다 효율적이다.

 

 

'SQL 문제풀이 > 프로그래머스' 카테고리의 다른 글

우유와 요거트가 담긴 장바구니  (0) 2021.08.12
입양 시각 구하기(2)  (0) 2021.08.12
입양 시각 구하기(1)  (0) 2021.08.12
동명 동물 수 찾기  (0) 2021.08.12
고양이와 개는 몇 마리 있을까  (0) 2021.08.12
Comments