๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ
์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์์ ์๋น์ ์ ๋ณด๋ฅผ ๋ด์ REST_INFO ํ ์ด๋ธ๊ณผ ์๋น์ ๋ฆฌ๋ทฐ ์ ๋ณด๋ฅผ ๋ด์ REST_REVIEW ํ ์ด๋ธ์ ๋๋ค.
REST_INFO ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS , TEL์ ์๋น ID, ์๋น ์ด๋ฆ, ์์ ์ข ๋ฅ, ์กฐํ์, ์ฆ๊ฒจ์ฐพ๊ธฐ์, ์ฃผ์ฐจ์ฅ ์ ๋ฌด, ์ฃผ์, ์ ํ๋ฒํธ๋ฅผ ์๋ฏธํฉ๋๋ค.
Column name | Type | Nullable |
REST_ID | VARCHAR(5) | FALSE |
REST_NAME | VARCHAR(50) | FALSE |
FOOD_TYPE | VARCHAR(20) | TRUE |
VIEWS | NUMBER | TRUE |
FAVORITES | NUMBER | TRUE |
PARKING_LOT | VARCHAR(1) | TRUE |
ADDRESS | VARCHAR(100) | TRUE |
TEL | VARCHAR(100) | TRUE |
REST_REVIEW ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, REVIEW_TEXT,REVIEW_DATE๋ ๊ฐ๊ฐ ๋ฆฌ๋ทฐ ID , ์๋น ID, ํ์ ID, ์ ์, ๋ฆฌ๋ทฐ ํ ์คํธ, ๋ฆฌ๋ทฐ ์์ฑ์ผ์ ์๋ฏธํฉ๋๋ค.
Column name | Type | Nullable |
REVIEW_ID | VARCHAR(10) | FALSE |
REST_ID | VARCHAR(10) | TRUE |
MEMBER_ID | VARCHAR(100) | TRUE |
REVIEW_SCORE | NUMBER | TRUE |
REVIEW_TEXT | VARCHAR(1000) | TRUE |
REVIEW_DATE | DATE | TRUE |
๋ฌธ์
REST_INFO์ REST_REVIEW ํ ์ด๋ธ์์ ์์ธ์ ์์นํ ์๋น๋ค์ ์๋น ID, ์๋น ์ด๋ฆ, ์์ ์ข ๋ฅ, ์ฆ๊ฒจ์ฐพ๊ธฐ์, ์ฃผ์, ๋ฆฌ๋ทฐ ํ๊ท ์ ์๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๋ฆฌ๋ทฐ ํ๊ท ์ ์๋ ์์์ ์ธ ๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ ํด์ฃผ์๊ณ ๊ฒฐ๊ณผ๋ ํ๊ท ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์๊ณ , ํ๊ท ์ ์๊ฐ ๊ฐ๋ค๋ฉด ์ฆ๊ฒจ์ฐพ๊ธฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
REST_INFO์ REST_REVIEW ํ ์ด๋ธ์์ ์์ธ์ ์์นํ ์๋น๋ค์ > ํ ์ด๋ธ JOIN
> WHERE ์กฐ๊ฑด : '์์ธ'์ ์์น
์๋น ID, ์๋น ์ด๋ฆ, ์์ ์ข ๋ฅ, ์ฆ๊ฒจ์ฐพ๊ธฐ์, ์ฃผ์, ๋ฆฌ๋ทฐ ํ๊ท ์ ์๋ฅผ ์กฐํ > ์๋น๋ณ(๊ทธ๋ฃนํ) ํ๊ท ์ ์ (์ง๊ณํจ์ ์ฌ์ฉ)
๋ฆฌ๋ทฐ ํ๊ท ์ ์๋ ์์์ ์ธ ๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ > ์ซ์ ๋ฐ์ฌ๋ฆผ ํจ์ ROUND(๊ฐ, ์๋ฆฟ์)
๊ฒฐ๊ณผ๋ ํ๊ท ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ > ์ ๋ ฌ์กฐ๊ฑด1
ํ๊ท ์ ์๊ฐ ๊ฐ๋ค๋ฉด ์ฆ๊ฒจ์ฐพ๊ธฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ > ์ ๋ ฌ์กฐ๊ฑด2
SELECT RI.REST_ID,
RI.REST_NAME,
RI.FOOD_TYPE,
RI.FAVORITES,
RI.ADDRESS,
ROUND(AVG(RR.REVIEW_SCORE), 2) SCORE
FROM REST_INFO RI
RIGHT JOIN REST_REVIEW RR
ON RI.REST_ID = RR.REST_ID
WHERE RI.ADDRESS LIKE '์์ธ%'
GROUP BY 2
ORDER BY 6 DESC, 4 DESC