ํ๋ก๊ทธ๋๋จธ์ค SQL ๊ณ ๋์ kit - ๊ทธ๋ฃน๋ณ ์กฐ๊ฑด์ ๋ง๋ ์๋น ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/131124#qna
: MEMBER_PROFILE์ REST_REVIEW ํ ์ด๋ธ์์ ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ์ฅ ๋ง์ด ์์ฑํ ํ์์ ๋ฆฌ๋ทฐ๋ค์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ํ์ ์ด๋ฆ, ๋ฆฌ๋ทฐ ํ ์คํธ, ๋ฆฌ๋ทฐ ์์ฑ์ผ์ด ์ถ๋ ฅ๋๋๋ก ์์ฑํด์ฃผ์๊ณ , ๊ฒฐ๊ณผ๋ ๋ฆฌ๋ทฐ ์์ฑ์ผ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์, ๋ฆฌ๋ทฐ ์์ฑ์ผ์ด ๊ฐ๋ค๋ฉด ๋ฆฌ๋ทฐ ํ ์คํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์
: ๋จผ์ rest_review ํ ์ด๋ธ์ member_id๋ก group by ํจ์๋ฅผ ํตํด ๊ทธ๋ฃนํ ํ ๊ทธ๋ฃน ๋ด row์ ์๋ฅผ ์ธ์ฃผ์ด ํน์ ๋ฉค๋ฒ๊ฐ ์์ฑํ ๋ฆฌ๋ทฐ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค. ์ฐ๋ฆฌ๊ฐ ๊ถ๊ธํ ๊ฑด ์ต๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ ์ฌ๋์ด ๋ช ๊ฐ์ ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๋์ง์ด๋ฏ๋ก ์ด๋ max()ํจ์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ order by๋ฅผ ํตํด ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ ํ limit 1์ผ๋ก ์ป์ด์ฌ ์ ์๋ค. ์ดํ ๋ค์ rest_review ํ ์ด๋ธ์ member_id๋ก ๊ทธ๋ฃนํ ํ ๋ having ์ ์ ํตํด ํ์ฌ ๊ทธ๋ฃน์ count(*)์ ์์ ๊ตฌํ ์ฌ์ฉ์๊ฐ ์์ฑํ ์ต๋ ๋ฆฌ๋ทฐ ์๊ฐ ๋์ผํ ๊ฒฝ์ฐ ์ต๋ ๋ฆฌ๋ทธ๋ฅผ ์์ฑํ ๋ฉค๋ฒ์์ ์ ์ ์๋ค.
select m.member_name, r.review_text, date_format(r.review_date, '%Y-%m-%d')
from member_profile m, rest_review r
where m.member_id = r.member_id
and m.member_id in (select r.member_id
from rest_review r
group by r.member_id
having count(*) = (
select max(cnt)
from (select member_id, count(*) cnt
from rest_review
group by member_id) as reviewCounts
))
order by review_date, review_text
select m.member_name, r.review_text, date_format(r.review_date, '%Y-%m-%d')
from member_profile m, rest_review r
where m.member_id = r.member_id
and m.member_id in (select r.member_id
from rest_review r
group by r.member_id
having count(*) = (
select count(*)
from rest_review
group by member_id
order by count(*) desc
limit 1
))
order by review_date, review_text
select m.member_name, r.review_text, date_format(r.review_date, '%Y-%m-%d')
from member_profile m, rest_review r
where m.member_id = r.member_id
and exists (select 1
from rest_review r
where r.member_id = m.member_id
group by r.member_id
having count(*) = (
select max(cnt)
from (select member_id, count(*) cnt
from rest_review
group by member_id) as reviewCounts
))
order by review_date, review_text