SQL 문제풀이

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

냄비짱 2023. 8. 11. 22:51
728x90

❓ Question

❗ Answer

SELECT p.member_name, r.review_text, DATE_FORMAT(r.review_date,'%Y-%m-%d')
    FROM member_profile p
    INNER JOIN rest_review r
            ON p.member_id = r.member_id
    WHERE p.member_id IN (SELECT member_id
                            FROM rest_review
                            GROUP BY member_id
                            HAVING COUNT(member_id) = (SELECT MAX(cnt)
                                                         FROM (SELECT COUNT(member_id) cnt
                                                                 FROM rest_review
                                                                 GROUP BY member_id) a))
    ORDER BY review_date, review_text;

📌 Discussion

  • 첫번째 sub query로 회원별 리뷰 개수를 추출하고
  • 두번째 sub query로 가장 큰 회원별 리뷰 개수를 추출하고
  • 세번째 sub query로 해당 리뷰 개수만큼 리뷰를 남긴 사람의 member_id를 추출하고
  • main query에서 해당 member_id를 활용하여 원하는 데이터를 추출
  • sub-query inline view로 테이블을 불러올 때는 반드시 alias가 있어야함