SQL 고득점 Kit - 8.13

김동현·2024년 8월 13일

SQL 고득점 Kit

목록 보기
27/56

JOIN - 그룹별 조건에 맞는 식당 목록 출력하기

문제

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

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

풀이

## 리뷰 카운트, ID, NAME 추출 쿼리
WITH maxreview AS (
    SELECT COUNT(r.MEMBER_ID) AS cnt, r.MEMBER_ID, m.MEMBER_NAME
    FROM REST_REVIEW r
    INNER JOIN MEMBER_PROFILE m
    ON r.MEMBER_ID = m.MEMBER_ID
    GROUP BY MEMBER_ID
)

SELECT m.MEMBER_NAME, r.REVIEW_TEXT, DATE_FORMAT(r.REVIEW_DATE,'%Y-%m-%d') REVIEW_DATE
FROM maxreview m
INNER JOIN REST_REVIEW r
ON r.MEMBER_ID = m.MEMBER_ID
WHERE cnt = (SELECT MAX(cnt) ## 제일 리뷰를 많이 남긴 조건
            FROM maxreview)
ORDER BY REVIEW_DATE, REVIEW_TEXT

리뷰

  • 기록을 보니 풀려고 시도하다가 결국 못 풀고 다른 문제를 푼 것 같다.
  • 이번에 아무것도 안 보고 20분 만에 혼자서 문제를 해결했다 (나 성장했냐?)
  • 해당 문제는 리뷰에서 제일 많은 리뷰를 남긴 멤버를 찾는 것이 포인트.
  • WITH을 이용하여 리뷰를 카운트하고 WHERE을 이용하여 최대 리뷰를 추출하는 서브 쿼리를 작성했다. 이 과정을 생각하는 게 좀 걸렸던 것 같음.
  • 나머지는 필요한 컬럼을 추가해주면 문제 해결 완료~

GitHub

https://github.com/lasentia/SQL_Study/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/4/131124.%E2%80%85%EA%B7%B8%EB%A3%B9%EB%B3%84%E2%80%85%EC%A1%B0%EA%B1%B4%EC%97%90%E2%80%85%EB%A7%9E%EB%8A%94%E2%80%85%EC%8B%9D%EB%8B%B9%E2%80%85%EB%AA%A9%EB%A1%9D%E2%80%85%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0

profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글