๐Ÿ—๏ธPROGRAMMERS/SQL

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

๋น™๋””์šฉ 2024. 4. 19.

์‹œ์šฉ์–ธ์–ด : 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๋กœ ๋ฌถ๋Š”๊ฒŒ ๋” ์•ˆ์ „ํ•ด๋ณด์ธ๋‹ค

๋Œ“๊ธ€