[SQL] 연습

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

Simon Yoon 2025. 4. 4. 13:53

문제:

리뷰를 가장 많이 작성한 회원의 리뷰들을 조회
- 회원 이름, 리뷰 텍스트, 리뷰 작성일을 출력
- 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 텍스트를 기준으로 오름차순

 

해결방법:

1. 회원별 리뷰수를 구한 뒤 최대값 구하기

2. 리뷰 수 최대값을 갖는 회원 구하기

3. 회원 이름과 회원 ID 로 조인

4. 리뷰 테이블에서 이전에 구한 가장 많이 작성한 회원 리스트와 비교(조건)

5. 정렬 조건 설정하기

 

예시 코드:

SELECT MEMBER_NAME, REVIEW_TEXT, DATE_FORMAT(REVIEW_DATE, '%Y-%m-%d') REVIEW_DATE
FROM MEMBER_PROFILE M
INNER JOIN REST_REVIEW R
ON M.MEMBER_ID = R.MEMBER_ID
WHERE M.MEMBER_ID IN (
    SELECT MEMBER_ID
    FROM REST_REVIEW
    GROUP BY MEMBER_ID
    HAVING COUNT(REVIEW_ID) = (
        SELECT COUNT(REVIEW_ID) CNT
        FROM REST_REVIEW
        GROUP BY MEMBER_ID
        ORDER BY CNT DESC
        LIMIT 1
        )
    )
ORDER BY REVIEW_DATE ASC, REVIEW_TEXT ASC
;