Q. MEMBER_PROFILE์ REST_REVIEW ํ ์ด๋ธ์์ ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ์ฅ ๋ง์ด ์์ฑํ ํ์์ ๋ฆฌ๋ทฐ๋ค์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ํ์ ์ด๋ฆ, ๋ฆฌ๋ทฐ ํ ์คํธ, ๋ฆฌ๋ทฐ ์์ฑ์ผ์ด ์ถ๋ ฅ๋๋๋ก ์์ฑํด์ฃผ์๊ณ , ๊ฒฐ๊ณผ๋ ๋ฆฌ๋ทฐ ์์ฑ์ผ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์, ๋ฆฌ๋ทฐ ์์ฑ์ผ์ด ๊ฐ๋ค๋ฉด ๋ฆฌ๋ทฐ ํ ์คํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
# Solution
์๋ sub query ๋ฅผ ์ฌ์ฉํ์ฌ review id count๊ฐ ๊ฐ์ฅ ๋ง์ ํ์์ ์งค๋ผ์ ํ๋๋ฐ..ํ๋ ธ๋ค๊ณ ๋์ด..
์ด๋ ๊ฒ join์ ์ where์ ์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๋ ์ ๋ต์ผ๋ก ๋์ด.
# ๋ค๋ฅธ์ฌ๋ ์ฝ๋
-> Group by, Rank, join, sub query, order by ๋ค ์ฌ์ฉํ๊ธธ๋ ๊ฐ์ ธ์๋ด
SELECT B.MEMBER_NAME, A.REVIEW_TEXT, A.REVIEW_DATE
FROM REST_REVIEW A
JOIN (
SELECT R.MEMBER_ID, M.MEMBER_NAME, RANK() OVER(ORDER BY CNT DESC) AS R
FROM (
SELECT *, COUNT(MEMBER_ID) AS CNT
FROM REST_REVIEW
GROUP BY MEMBER_ID) AS R
JOIN MEMBER_PROFILE M ON R.MEMBER_ID = M.MEMBER_ID) B
ON A.MEMBER_ID = B.MEMBER_ID
WHERE B.R = 1
ORDER BY A.REVIEW_DATE;
https://school.programmers.co.kr/learn/courses/30/lessons/131124
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr