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

AMUD·2022년 10월 8일
4

My Database

목록 보기
1/13

문제


문제링크

접근

  • 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;
profile
210's Velog :: Ambition Makes Us Diligent

3개의 댓글

comment-user-thumbnail
2023년 2월 10일

REVIEW_DATE DATE_FORMAT 사용해서 출력해야할 것 같습니다!

1개의 답글
comment-user-thumbnail
2024년 1월 13일

최대 개수가 여러 명인 경우도 출력하고 싶었는데 감사합니당

답글 달기