์„œ์šธ์— ์œ„์น˜ํ•œ ์‹๋‹น ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

2024. 10. 30. 17:29ใ†๐Ÿ“ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ/SQL

๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

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

Column nameTypeNullable
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 nameTypeNullable
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_IDREST_NAMEFOOD_TYPEVIEWSFAVORITESPARKING_LOTADDRESSTEL
00028 ๋Œ€์šฐ๋ถ€๋Œ€์ฐŒ๊ฐœ ํ•œ์‹ 52310 10 N ๊ฒฝ๊ธฐ๋„ ์šฉ์ธ์‹œ ์ฒ˜์ธ๊ตฌ ๋‚จ์‚ฌ์ ์ฒ˜์ธ์„ฑ๋กœ 309 031-235-1235
00039 ๊ด‘์ฃผ์‹๋‹น ํ•œ์‹ 23001 20 N ๊ฒฝ๊ธฐ๋„ ๋ถ€์ฒœ์‹œ ์‚ฐ์—…๋กœ8๋ฒˆ๊ธธ 60 031-235-6423
00035 ์‚ผ์ดŒ์‹๋‹น ์ผ์‹ 532123 80 N ์„œ์šธํŠน๋ณ„์‹œ ๊ฐ•์„œ๊ตฌ ๊ฐ€๋กœ๊ณต์›๋กœ76๊ฐ€๊ธธ 02-135-1266

REST_REVIEW ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ

REVIEW_IDREST_IDMEMBER_IDREVIEW_SCOREREVIEW_TEXTREVIEW_DATE
R000000065 00028 soobin97@naver.com 5 ๋ถ€์ฐŒ ๊ตญ๋ฌผ์—์„œ ์ƒค๋ธŒ์ƒค๋ธŒ ๋ง›์ด๋‚˜๊ณ  ๊น”๋” 2022-04-12
R000000066 00039 yelin1130@gmail.com 5 ๊น€์น˜์ฐŒ๊ฐœ ์ตœ๊ณฑ๋‹ˆ๋‹ค. 2022-02-12
R000000067 00028 yelin1130@gmail.com 5 ํ–„์ด ๋งŽ์•„์„œ ์ข‹์•„์š” 2022-02-22
R000000068 00035 ksyi0316@gmail.com 5 ์ˆ™์„ฑํšŒ๊ฐ€ ๋๋‚ด์ค๋‹ˆ๋‹ค. 2022-02-15
R000000069 00035 yoonsy95@naver.com 4 ๋น„๋ฆฐ๋‚ด๊ฐ€ ์ „ํ˜€์—†์–ด์š”. 2022-04-16

SQL์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


REST_IDREST_NAMEFOOD_TYPEFAVORITESADDRESSSCORE
00035 ์‚ผ์ดŒ์‹๋‹น ์ผ์‹ 80 ์„œ์šธํŠน๋ณ„์‹œ ๊ฐ•์„œ๊ตฌ ๊ฐ€๋กœ๊ณต์›๋กœ76๊ฐ€๊ธธ

-- ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”
SELECT REST_INFO.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO JOIN REST_REVIEW ON REST_INFO.REST_ID = REST_REVIEW.REST_ID
WHERE ADDRESS LIKE '์„œ์šธ%'
GROUP BY REST_INFO.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS
ORDER BY SCORE DESC, FAVORITES DESC;

 

1. SELECT ์ ˆ:

REST_INFO.REST_ID: ์‹๋‹น์˜ ID๋ฅผ ์„ ํƒํ•œ๋‹ค.
REST_NAME: ์‹๋‹น์˜ ์ด๋ฆ„์„ ์„ ํƒํ•œ๋‹ค.
FOOD_TYPE: ์Œ์‹ ์ข…๋ฅ˜๋ฅผ ์„ ํƒํ•œ๋‹ค.
FAVORITES: ์ฆ๊ฒจ์ฐพ๊ธฐ ์ˆ˜๋ฅผ ์„ ํƒํ•œ๋‹ค.
ADDRESS: ์‹๋‹น์˜ ์ฃผ์†Œ๋ฅผ ์„ ํƒํ•œ๋‹ค.
ROUND(AVG(REVIEW_SCORE), 2) AS SCORE: ๋ฆฌ๋ทฐ ์ ์ˆ˜์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๊ณ , ์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ SCORE๋ผ๋Š” ๋ณ„์นญ์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค.


2. FROM ์ ˆ:

FROM REST_INFO JOIN REST_REVIEW ON REST_INFO.REST_ID = REST_REVIEW.REST_ID: REST_INFO ํ…Œ์ด๋ธ”๊ณผ REST_REVIEW ํ…Œ์ด๋ธ”์„ REST_ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์กฐ์ธํ•œ๋‹ค. ์ด ์กฐ์ธ์„ ํ†ตํ•ด ๊ฐ ์‹๋‹น์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

 

3. WHERE ์ ˆ:

WHERE ADDRESS LIKE '์„œ์šธ%': ์ฃผ์†Œ๊ฐ€ '์„œ์šธ'๋กœ ์‹œ์ž‘ํ•˜๋Š” ์‹๋‹น๋งŒ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. %๋Š” ์™€์ผ๋“œ์นด๋“œ๋กœ, '์„œ์šธ' ๋’ค์— ์–ด๋–ค ๋ฌธ์ž์—ด์ด ์™€๋„ ์ƒ๊ด€์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค.


4. GROUP BY ์ ˆ:

GROUP BY REST_INFO.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS: ์ด ์ ˆ์€ ์„ ํƒํ•œ ์ปฌ๋Ÿผ๋“ค์— ๋Œ€ํ•ด ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ํ‰๊ท  ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค. ๋ชจ๋“  ๋น„์ง‘๊ณ„ ์ปฌ๋Ÿผ์ด GROUP BY์— ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ, ์—ฌ๊ธฐ์„œ๋Š” ๋ชจ๋“  ์„ ํƒ๋œ ์ปฌ๋Ÿผ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
ORDER BY ์ ˆ:

ORDER BY SCORE DESC, FAVORITES DESC: ๋จผ์ € SCORE๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , ๊ฐ™์€ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ FAVORITES๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•