๐Ÿ–ฅ๏ธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/SQL

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [SQL] ์„œ์šธ์— ์œ„์น˜ํ•œ ์‹๋‹น ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

rtw0202 2026. 2. 21. 12:42

1. ๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์‹๋‹น์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ REST_INFO ํ…Œ์ด๋ธ”๊ณผ ์‹๋‹น์˜ ๋ฆฌ๋ทฐ ์ •๋ณด๋ฅผ ๋‹ด์€ REST_REVIEW ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. REST_INFO ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ REST_IDREST_NAMEFOOD_TYPEVIEWSFAVORITESPARKING_LOTADDRESSTEL์€ ์‹๋‹น ID, ์‹๋‹น ์ด๋ฆ„, ์Œ์‹ ์ข…๋ฅ˜, ์กฐํšŒ์ˆ˜, ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜, ์ฃผ์ฐจ์žฅ ์œ ๋ฌด, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

REST_REVIEW ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ REVIEW_IDREST_IDMEMBER_IDREVIEW_SCOREREVIEW_TEXT,REVIEW_DATE๋Š” ๊ฐ๊ฐ ๋ฆฌ๋ทฐ ID, ์‹๋‹น ID, ํšŒ์› ID, ์ ์ˆ˜, ๋ฆฌ๋ทฐ ํ…์ŠคํŠธ, ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

REST_INFO์™€ REST_REVIEW ํ…Œ์ด๋ธ”์—์„œ ์„œ์šธ์— ์œ„์น˜ํ•œ ์‹๋‹น๋“ค์˜ ์‹๋‹น ID, ์‹๋‹น ์ด๋ฆ„, ์Œ์‹ ์ข…๋ฅ˜, ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜, ์ฃผ์†Œ, ๋ฆฌ๋ทฐ ํ‰๊ท  ์ ์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๋ฆฌ๋ทฐ ํ‰๊ท ์ ์ˆ˜๋Š” ์†Œ์ˆ˜์  ์„ธ ๋ฒˆ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ ํ•ด์ฃผ์‹œ๊ณ  ๊ฒฐ๊ณผ๋Š” ํ‰๊ท ์ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์‹œ๊ณ , ํ‰๊ท ์ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

2. ์ถœ๋ ฅ ์˜ˆ์‹œ

 

3. ๋ฌธ์ œ ๋‹ต์•ˆ

SELECT 
    i.rest_id,
    i.rest_name,
    i.food_type,
    i.favorites,
    i.address,
    ROUND(AVG(r.review_score), 2) as score
FROM rest_info i
JOIN rest_review r
ON i.rest_id = r.rest_id
WHERE i.address LIKE '์„œ์šธ%'
GROUP BY i.rest_id
ORDER BY score DESC, i.favorites DESC;