1. 문제 풀이 아이디어
WITH
절로 회원별 리뷰 개수를 구하고DENSE_RANK()
로 최다 리뷰 회원을 찾은 후,JOIN
을 사용해 필터링하여 문제를 해결한다.
2. 나의 정답 코드
WITH counts AS (
SELECT
member_id,
COUNT(*) AS review_count,
DENSE_RANK() OVER (ORDER BY COUNT(*) DESC) AS rnk
FROM rest_review
GROUP BY member_id
)
SELECT
m.member_name,
r.review_text,
LEFT(r.review_date, 10) AS review_date
FROM rest_review r
JOIN member_profile m ON r.member_id = m.member_id
JOIN counts c ON r.member_id = c.member_id
WHERE c.rnk = 1
ORDER BY
review_date,
review_text;
3. 정리
counts
CTE에서GROUP BY
로 회원별 리뷰 개수를 구하고DENSE_RANK()
로 최다 리뷰 회원을 찾는다.
JOIN
을 사용하여member_profile
과rest_review
를 연결하고, 최다 리뷰 회원만 선택한다.
ORDER BY
로review_date
,review_text
순으로 정렬하여 출력한다.
Share article