Algorithm/SQL

[MySQL] 그룹별 조건에 맞는 식당 목록 출력하기

say! 2026. 6. 25. 17:51
728x90

 

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

*WHERE IN절에는 LIMIT 사용X

# 리뷰 가장 많이 작성한 회원의 리뷰 > 회원 이름, 리뷰 텍스트, 리뷰 작성일
SELECT M.MEMBER_NAME, R.REVIEW_TEXT, R.REVIEW_DATE
FROM MEMBER_PROFILE M JOIN REST_REVIEW R ON M.MEMBER_ID = R.MEMBER_ID
WHERE M.MEMBER_ID = (
    SELECT MEMBER_ID
    FROM REST_REVIEW
    GROUP BY MEMBER_ID
    ORDER BY COUNT(*) DESC
    LIMIT 1)
ORDER BY R.REVIEW_DATE ASC, R.REVIEW_TEXT ASC;

>통과되긴 했는데 공동 1등인 경우가 고려안되어 있음

 

#공동 1등도 고려하는 경우

>프로그래머스 채점에서는 틀렸다고 나오는데, 채점기준에 문제가 있는 것 같음

# 리뷰 가장 많이 작성한 회원의 리뷰 > 회원 이름, 리뷰 텍스트, 리뷰 작성일
SELECT M.MEMBER_NAME, R.REVIEW_TEXT, DATE_FORMAT(R.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE
FROM MEMBER_PROFILE M 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(*) = (
        SELECT COUNT(*)
        FROM REST_REVIEW
        GROUP BY MEMBER_ID
        ORDER BY COUNT(*) DESC
        LIMIT 1)
    )
ORDER BY R.REVIEW_DATE ASC, R.REVIEW_TEXT ASC;