문제
https://programmers.co.kr/learn/courses/30/lessons/77487#_=_
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
풀이 코드
SELECT *
FROM PLACES
WHERE HOST_ID IN
(SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(HOST_ID)>=2)
ORDER BY ID
풀이 과정
1. 출력되는 값은 ID, NAME, HOST_ID 이고 PLACES라는 테이블에서 다음 열들을 가져 온다.
2. 문제 조건은 HOST_ID의 갯수가 2 이상인 값들만 출력하도록 되어있기 때문에 HOST_ID값이 2 이상인 HOST_ID값을 가져오기 위해 서브 쿼리를 만든다. 해서 HOST_ID값 중 서브쿼리에 속해있는 값만 출력되도록 WHERE문에 조건을 써 넣는다.
3. ID순으로 조회해야되기 때문에 ORDER BY ID를 해준다.
서브쿼리
1. HOST_ID값을 카테고리 값 별로 COUNT 하기위해 HOST_ID의 값을 GROUP BY로 묶는다.
2. COUNT는 집계 함수로 '공간을 둘 이상 등록한 사람을 "헤비 유저"' 라고 칭하기 때문에 HAVING절에 COUNT(HOST_ID) 한 값이 2 이상인 경우만 SELECT 하는 조건식을 세워준다.
끝!
'Study > 코딩테스트' 카테고리의 다른 글
[ 프로그래머스 / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / Python ] 로또의 최고 순위와 최저 순위 (0) | 2022.02.21 |
---|---|
[ 프로그래머스 / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / Python ] 다단계 칫솔 판매 (0) | 2022.02.21 |
[프로그래머스 / 2022 KAKAO BLIND RECRUITMENT / Python ] 파괴되지 않은 건물 (0) | 2022.02.14 |
[프로그래머스 / 2022 KAKAO BLIND RECRUITMENT / Python ] 양궁대회 (0) | 2022.02.14 |
[프로그래머스 / 2022 KAKAO BLIND RECRUITMENT / Python]k진수에서 소수 개수 구하기 (0) | 2022.02.14 |