문제
문제링크
접근
- MAX, ORDER BY 후 LIMIT 1을 하면 최대 개수가 여러 명인 경우에 논리적 오류가 생긴다.
- RANK를 이용해야 한다.
- GROUP BY, RANK, 서브 쿼리, 조인, 정렬이 모두 사용된다.
- 원래는 개인적으로 풀이하려다가 더 나은 정답이 있는지 검색해보았는데 게시글이 딱히 없어서 공유를 위해 게시글을 작성하였다.
풀이
SELECT B.MEMBER_NAME, A.REVIEW_TEXT, A.REVIEW_DATE
FROM REST_REVIEW A
JOIN (
SELECT R.MEMBER_ID, M.MEMBER_NAME, RANK() OVER(ORDER BY CNT DESC) AS RANKING
FROM (
SELECT *, COUNT(MEMBER_ID) AS CNT
FROM REST_REVIEW
GROUP BY MEMBER_ID) AS R
JOIN MEMBER_PROFILE M ON R.MEMBER_ID = M.MEMBER_ID) B
ON A.MEMBER_ID = B.MEMBER_ID
WHERE B.RANKING = 1
ORDER BY A.REVIEW_DATE;
REVIEW_DATE DATE_FORMAT 사용해서 출력해야할 것 같습니다!