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

    728x90

     

    문제

    https://school.programmers.co.kr/learn/courses/30/lessons/131124

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    • 리뷰를 가장 많이 작성한 회원리뷰들을 조회하는 SQL문 작성
    • 리뷰 작성일 기준 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트 기준 오름차순 정렬
    • 쿼리 결과 : 회원 이름, 리뷰 텍스트, 리뷰 작성일

     

    테이블

    MEMBER_PROFILE
    REST_REVIEW

     

     

    풀이과정

    • 최대 리뷰 작성 수를 가진 회원 아이디를 찾은 뒤 해당 회원 아이디를 가진 회원의 이름, 리뷰 내용, 리뷰 작성 날짜를 조회함
      • 최대 리뷰 작성 수 : COUNT(각 회원 별 리뷰 작성 수 카운트 : 서브쿼리2) = MAX(각 회원 별 리뷰 작성 수 카운트 : 서브쿼리1
      • 최대 리뷰 작성 수를 가진 회원 아이디 : MEMBER_ID  IN(최대 리뷰 작성 수를 가진 회원 아이디 : 서브쿼리3)
      • 위 두 조건에 부합한  회원 아이디와 매칭되는 회원 이름, 리뷰 내용, 리뷰 작성 날짜 조회
      • 리뷰 작성 날짜 오름차순, 리뷰 내용 오름차순 정렬해주면 끝! 

    # 정답

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT MP.MEMBER_NAME, 
           RR.REVIEW_TEXT, 
           DATE_FORMAT(RR.REVIEW_DATE, '%Y-%m-%d') REVIEW_DATE
    FROM REST_REVIEW RR
    JOIN MEMBER_PROFILE MP ON RR.MEMBER_ID = MP.MEMBER_ID
    WHERE RR.MEMBER_ID IN (SELECT MEMBER_ID
                           FROM REST_REVIEW
                           GROUP BY MEMBER_ID
                           HAVING COUNT(REVIEW_ID) = (SELECT MAX(CRI) 
                                                      FROM (SELECT MEMBER_ID, COUNT(REVIEW_ID) CRI 
                                                            FROM REST_REVIEW 
                                                            GROUP BY MEMBER_ID) A -- 서브쿼리1 : 각 회원의 리뷰 작성 수
                                                     ) -- 서브쿼리2: 최대 리뷰 작성 수
                          ) -- 서브쿼리3: IN(최대 리뷰 작성 수를 보유한 회원 아이디)
    ORDER BY REVIEW_DATE, RR.REVIEW_TEXT
    cs
    728x90

    댓글