๋ฐ์ํ
๐ฑ ๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
REST_INFO
์ REST_REVIEW
ํ
์ด๋ธ์์ ์์ธ์ ์์นํ ์๋น๋ค์ ์๋น ID, ์๋น ์ด๋ฆ, ์์ ์ข
๋ฅ, ์ฆ๊ฒจ์ฐพ๊ธฐ์, ์ฃผ์, ๋ฆฌ๋ทฐ ํ๊ท ์ ์๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๋ฆฌ๋ทฐ ํ๊ท ์ ์๋ ์์์ ์ธ ๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ ํด์ฃผ์๊ณ ๊ฒฐ๊ณผ๋ ํ๊ท ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์๊ณ , ํ๊ท ์ ์๊ฐ ๊ฐ๋ค๋ฉด ์ฆ๊ฒจ์ฐพ๊ธฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
๐ฑ ํ์ด
FROM REST_INFO NATURAL JOIN REST_REVIEW
natural join์ ๋๊ฐ์ ํ ์ด๋ธ์ ๊ณตํต๋ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก joinํด์ฃผ๊ณ , ๊ณตํต๋ ์ปฌ๋ผ ์ค ํ๋๋ง ๋จ๊ฒจ๋ก๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ ์ปฌ๋ผ๋ช ์ ๊ธฐ์ค์ผ๋ก joinํ ๋๋ natural join์ด ๊ฐ์ฅ ๊ฐ๊ฒฐํ join์ธ ๊ฒ ๊ฐ์ต๋๋ค. (on์ ์ ์ฐ์ง ์์๋ ๋ฉ๋๋ค)
(๋ง์ฝ left join์ ์ฌ์ฉํ๋ค๋ฉด, ์๋์ ๊ฐ์ด ์จ์ฃผ์ด์ผ ํฉ๋๋ค.FROM REST_INFO LEFT JOIN REST_REVIEW ON REST_INFO.REST_ID = REST_REVIEW.REST_ID
)WHERE ADDRESS LIKE '์์ธ%'
์์ธ์ ์์ฐจํ ์๋น๋ค์ ์ ๋ณด๋ง ์ถ๋ ฅํด์ผ ํ๋ฏ๋กADDRESS
๊ฐ ์์ธ๋ก ์์ํ๋ ์กฐ๊ฑด์ ๊ฑธ์ด์ค๋๋ค.
('์์ธ%'
๋ณด๋ค'%์์ธ%'
์ด ๋ ์ ํํ ์กฐ๊ฑด์ด ์๋๊น ์๊ฐํ๋๋ฐ, ์ฃผ์๊ฐ '์ธ์ฒญ๊ด์ญ์ ์์ธ๋น๋ฉ'์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด๋ฉด '์์ธ'๋ก ์์ํ๋ ์ฃผ์๋ง ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์ ํํฉ๋๋ค.)GROUP BY REST_ID
REST_ID
๋ก ๊ทธ๋ฃน๋ฐ์ด๋ฅผ ํ์ฌREVIEW_SCORE
์ ํ๊ท ์ ๊ตฌํฉ๋๋ค.ORDER_BY SCORE DESC, FAVORITES DESC
์ฒซ๋ฒ์งธ๋ก ๋ฆฌ๋ทฐ ํ์ ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆฝ์ฐจ์ ์ ๋ ฌํ๊ณ , ๋๋ฒ์งธ๋ ๋ถ๋งํฌํ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํฉ๋๋ค.
๐ฑ ์ฝ๋
SELECT REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO
NATURAL JOIN REST_REVIEW
WHERE ADDRESS LIKE '์์ธ%'
GROUP BY REST_ID
ORDER BY SCORE DESC, FAVORITES DESC
๋ฐ์ํ
๋๊ธ