코딩테스트/SQL 코드카타
MySQL 프로그래머스 | 그룹별 조건에 맞는 식당 목록 출력하기
ANNASENA
2024. 9. 18. 08:00
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131124
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문 작성
- 리뷰 작성일 기준 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트 기준 오름차순 정렬
- 쿼리 결과 : 회원 이름, 리뷰 텍스트, 리뷰 작성일
테이블
MEMBER_PROFILE | ![]() |
REST_REVIEW | ![]() |
풀이과정
- 최대 리뷰 작성 수를 가진 회원 아이디를 찾은 뒤 해당 회원 아이디를 가진 회원의 이름, 리뷰 내용, 리뷰 작성 날짜를 조회함
- 최대 리뷰 작성 수 : COUNT(각 회원 별 리뷰 작성 수 카운트 : 서브쿼리2) = MAX(각 회원 별 리뷰 작성 수 카운트 : 서브쿼리1)
- 최대 리뷰 작성 수를 가진 회원 아이디 : MEMBER_ID IN(최대 리뷰 작성 수를 가진 회원 아이디 : 서브쿼리3)
- 위 두 조건에 부합한 회원 아이디와 매칭되는 회원 이름, 리뷰 내용, 리뷰 작성 날짜 조회
- 리뷰 작성 날짜 오름차순, 리뷰 내용 오름차순 정렬해주면 끝!
# 정답
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SELECT MP.MEMBER_NAME, RR.REVIEW_TEXT, DATE_FORMAT(RR.REVIEW_DATE, '%Y-%m-%d') REVIEW_DATE FROM REST_REVIEW RR JOIN MEMBER_PROFILE MP ON RR.MEMBER_ID = MP.MEMBER_ID WHERE RR.MEMBER_ID IN (SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID HAVING COUNT(REVIEW_ID) = (SELECT MAX(CRI) FROM (SELECT MEMBER_ID, COUNT(REVIEW_ID) CRI FROM REST_REVIEW GROUP BY MEMBER_ID) A -- 서브쿼리1 : 각 회원의 리뷰 작성 수 ) -- 서브쿼리2: 최대 리뷰 작성 수 ) -- 서브쿼리3: IN(최대 리뷰 작성 수를 보유한 회원 아이디) ORDER BY REVIEW_DATE, RR.REVIEW_TEXT | cs |
728x90