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

Jiwoo·2024년 6월 26일
0

SQL

목록 보기
29/32

📌 헤비 유저가 소유한 장소

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

이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.

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) >= 2
)
ORDER BY ID

GROUP BY + EXISTS

  • 해당 값이 존재하는 가에 대한 여부만을 판별

EXISTS 연산자

  • EXISTS(서브쿼리)는 서브 쿼리의 결과가 한 건이라도 존재하면 TRUE를, 없으면 FALSE를 리턴
  • 서브 쿼리에 일치하는 결과가 한 건이라도 있으면 쿼리 더 이상 수행 X
  • P1의 행에 대해 서브쿼리를 실행하여, 동일한 HOST_ID를 가진 P2의 행이 두 개 이상 존재하면 P1의 해당 행을 결과에 포함

EXISTS를 사용하는 이유

  • EXISTS는 서브쿼리가 실제로 반환하는 행의 수에 관계없이, 하나 이상의 행이 존재하는지만 체크
  • 불필요하게 많은 데이터를 반환하지 않기 때문에 효율적

0개의 댓글