기억보다 기록을

[Programmers] 그룹별 조건에 맞는 식당 목록 출력하기 (mysql, with 사용) 본문

Language/SQL

[Programmers] 그룹별 조건에 맞는 식당 목록 출력하기 (mysql, with 사용)

juyeong 2023. 2. 16. 12:32
반응형

Q. MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.

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

 

어려웠다~ 찾아보니 이문제를 푸는 다양한 방식이 있었다.

처음 문제를 보고 직관적으로 든 생각은 서브쿼리를 쓸까? 였다. 근데 서브쿼리가 2중으로 들어가면 성능면에서 너무 좋지않을 것 같았다.

rank over()등의 윈도우 함수를 써서 푼 분들도 봤는데 그 답안도 따로 공부해야겠다. 

정답이긴한데 뭔가 찜찜한.. 다음에 또 복습해야지.

궁금한 점은 댓글 주세요~

WITH topReview AS (
    SELECT MEMBER_ID, COUNT(REVIEW_ID) AS reviewCnt
     FROM REST_REVIEW 
    GROUP BY MEMBER_ID
    ORDER BY reviewCnt DESC
    LIMIT 1
) 
SELECT A.MEMBER_NAME, C.REVIEW_TEXT
        , DATE_FORMAT(C.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE
FROM MEMBER_PROFILE A
INNER JOIN topReview B
ON A.MEMBER_ID = B.MEMBER_ID
INNER JOIN REST_REVIEW C
ON A.MEMBER_ID = C.MEMBER_ID
ORDER BY C.REVIEW_DATE, C.REVIEW_TEXT

 

반응형