본문 바로가기
Stay Hungry Stay Foolish/SQL

[MYSQL] 헤비 유저가 소유한 장소

by HANNI하니 2023. 10. 4.

사용 언어 - MYSQL

프로그래머스 LV 4) 헤비 유저가 소유한 장소

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

정답

자체 JOIN (정답 맞춘 여부 O

내 정답 : PLACES 테이블을 조건에 부합하는 PLACES 테이블로 JOIN한다.

SELECT A.ID, A.NAME, A.HOST_ID
FROM PLACES AS A
JOIN (
    SELECT *
    FROM PLACES
    GROUP BY HOST_ID
    HAVING COUNT(*) >= 2
) AS B
ON A.HOST_ID = B.HOST_ID

ORDER BY A.ID;

 

다른 분의 정답

1. IN을 이용해서 HOST_ID가 여러개인 경우에만 출력하는 방법

SELECT * FROM PLACES
WHERE HOST_ID IN(
    SELECT HOST_ID FROM PLACES
    GROUP BY HOST_ID
    HAVING COUNT(ID) >= 2
)
ORDER BY ID ASC;

2. HOST_ID가 여러개인 경우에만 1을 입력, WHERE EXISTS를 이용해서 1인 경우에만 출력하는 방법 

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

 

 

 

레퍼런스

  • 정답 깃허브

https://github.com/yyeongeun/codingtest/blob/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%20MYSQL/%ED%97%A4%EB%B9%84%EC%9C%A0%EC%A0%80%EA%B0%80%EC%86%8C%EC%9C%A0%ED%95%9C%EC%9E%A5%EC%86%8C.sql

 

댓글