IT/SQL

[MySQL] 프로그래머스 - 그룹별 조건에 맞는 식당 목록 출력하기

무지개는 환상 2024. 1. 29. 09:20

<MEMBER_PROFILE> & <REST_REVIEW> 테이블 구조

MEMBER_PROFILE 테이블
REST_REVIEW 테이블

 

<문제>

 

 

 

<문제 풀이>

SELECT MEMBER_NAME, REVIEW_TEXT, DATE_FORMAT(REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE
FROM MEMBER_PROFILE AS P
    JOIN REST_REVIEW AS R
    ON P.MEMBER_ID = R.MEMBER_ID

WHERE P.MEMBER_ID = (SELECT MEMBER_ID
                    FROM REST_REVIEW
                    GROUP BY MEMBER_ID
                    ORDER BY COUNT(*) DESC
                    LIMIT 1)

ORDER BY 3 asc, 2 asc;

 

첫 번째로는 리뷰를 가장 많이 작성한 회원이 누구인지를 찾는 쿼리를 작성해야한다.

그래서 리뷰 테이블에서 member_id로 그룹화 해준 후 지난번  문제처럼 ORDER절에 집계 함수인 count를 사용하였다.

그 다음 가장 많이 작성한 회원 한명만 있으면 되니까 limit 1 를 해줬다.

 

위에 작성한 쿼리를 서브 쿼리로 만든 후 해당 id 값을 가진 멤버의 이름과 리뷰 내용들에 대한 메인 요구사항을 불러오는 쿼리를 작성해야했다.

문제에서 요구하는 내용들을 SELECT절에 작성 & 두 테이블을 member_id로 조인 하였다.

그리고 마지막으로 메인 쿼리의 ORDER절을 작성하고, 마지막 컬럼의 데이트 포멧을 통일 시켜 주었다.

 

출처 : 프로그래머스 - 그룹별 조건에 맞는 식당 목록 출력하기