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 nameTypeNullableREST_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 nameTypeNullableREVIEW_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_LOTADDRESSTEL00028 | ๋์ฐ๋ถ๋์ฐ๊ฐ | ํ์ | 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_DATER000000065 | 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๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
'๐ ์ฝ๋ฉ ํ ์คํธ > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3์์ ํ์ด๋ ์ฌ์ฑ ํ์ ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ (2) | 2024.10.30 |
---|---|
๊ณผ์ผ๋ก ๋ง๋ ์์ด์คํฌ๋ฆผ ๊ณ ๋ฅด๊ธฐ (0) | 2024.10.29 |
ํ๊ท ์ผ์ผ ๋์ฌ ์๊ธ ๊ตฌํ๊ธฐ (0) | 2024.10.29 |