์์ฉ์ธ์ด : MYSQL
LEVEL : 4
๋ฌธ์ : ์์ธ์ ์์นํ ์๋น ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ํ์ด
SELECT A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS,
ROUND(AVG(B.REVIEW_SCORE),2) AS SCORE
FROM REST_INFO A
JOIN REST_REVIEW B
ON A.REST_ID = B.REST_ID
WHERE A.ADDRESS LIKE '์์ธ%'
GROUP BY REST_NAME
ORDER BY SCORE DESC, A.FAVORITES DESC;
- REST_INFO ํ ์ด๋ธ๊ณผ REST_REVIEW ํ ์ด๋ธ ๋์ ๊ฐ์ด ๋น๊ตํด์ผํ๊ธฐ ๋๋ฌธ์ JOINํ์ ์ ํ์ฉ
- REVIEW_SCORE์ ํ๊ท ์ ๋ด๊ธฐ์ํด AVGํจ์๋ฅผ ์ฌ์ฉํ์๊ณ , ์ด๋ฅผ ์์์ 3๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ ํ๊ธฐ ์ํด ROUND ํจ์๋ฅผ ์ฌ์ฉ
- ROUND(1.456, 0) -- 1
- ROUND(1.456, 1) -- 1.5
- ์๋น๋ค์ ๊ทธ๋ฃน์ผ๋ก ํญ๋ชฉ์ ์กฐํํ๊ธฐ ์ํด REST_NAME์ GROUP BY์ ์ ํตํด ๋ฌถ์
- 1์ฐจ์ ์ผ๋ก SCORE ๋ฐ๋ผ ๋ด๋ฆผ์ฐจ์, SCORE๊ฐ ๊ฐ์๋์๋ ์ฆ๊ฒจ์ฐพ๊ธฐ์์ ๋ฐ๋ผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ผ ํ๊ธฐ ๋๋ฌธ์ ORDER BY์ ์ ์กฐ๊ฑด์ ๋ง์ถฐ ์์ฑ
ํ๊ธฐ
๋ฌธ์ ํ์ด๋ฅผ ์์ฑํ๋ค ๋ณด๋, GROUP_BY์ ์ REST_NAME๋ณด๋จ REST_ID๋ก ๋ฌถ๋๊ฒ ๋ ์์ ํด๋ณด์ธ๋ค
๋๊ธ