CodingTest Practice/Programmers

프로그래머스 : 헤비 유저가 소유한 장소 (SQL, ORACLE)

몽땅마니아(MDD) 2022. 6. 10. 09:27

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

 

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

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

programmers.co.kr

SQL 고득점 키트에서 GROUP BY 쓸 때 딱히 문제가 없었는데 이번에는  "not a GROUP BY expression"이라는 에러를 처음으로 마주했다.

그래서 찾아보니 SELECT 절에는 GROUP BY 에 언급된 절이거나 집계함수만 들어갈 수 있다고 한다.

(왜 이제야 안거지? 내일 당황할 뻔...)

https://kimsyoung.tistory.com/entry/GROUP-BY%E4%B8%8B-%EC%98%A4%EB%A5%98%EB%AC%B8-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0

 

GROUP BY (下) : 오류문 해결하기

여러분이 숙련된 SQL 사용자이든 이제 갓 SQL을 배우기 시작한 초보자이든 상관없이 쿼리를 실행하다 보면 각종 오류와 마주하게 됩니다. 오류 메시지를 읽으면 그걸 읽고 해결할 수 있어야 하는

kimsyoung.tistory.com

 

정답 코드

-- 테이블에 두 번 이상 언급된 ID를 따로 구해 WHERE절에서 IN으로 연산
SELECT ID, NAME, HOST_ID
FROM PLACES
WHERE HOST_ID IN (
SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(HOST_ID) > 1
)
ORDER BY ID;