๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿค– ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[SQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.4 - ๊ทธ๋ฃน๋ณ„ ์กฐ๊ฑด์— ๋งž๋Š” ์‹๋‹น ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

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