๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์์ ์๋น์ ์ ๋ณด๋ฅผ ๋ด์ REST_INFO ํ ์ด๋ธ์ ๋๋ค. 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_INFO ํ ์ด๋ธ์์ ์์์ข ๋ฅ๋ณ๋ก ์ฆ๊ฒจ์ฐพ๊ธฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น์ ์์ ์ข ๋ฅ, ID, ์๋น ์ด๋ฆ, ์ฆ๊ฒจ์ฐพ๊ธฐ์๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์์ ์ข ๋ฅ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
REST_INFO ํ ์ด๋ธ์์ ์์์ข ๋ฅ๋ณ๋ก ์ฆ๊ฒจ์ฐพ๊ธฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น์ ์์ ์ข ๋ฅ, ID, ์๋น ์ด๋ฆ, ์ฆ๊ฒจ์ฐพ๊ธฐ์๋ฅผ ์กฐํ
> ์์์ข ๋ฅ๋ณ(FOOD_TYPE)๋ก ์ฆ๊ฒจ์ฐพ๊ธฐ์๊ฐ ๊ฐ์ฅ ๋ง์(MAX)
์กฐ๊ฑด์ผ๋ก ์๊ฐํด๋ณด๋ฉด (์กฐ๊ฑด1) ์์ ์ข ๋ฅ๋ณ๋ก ๋ถ๋ฅ๋ ์ํ์์
(์กฐ๊ฑด2) ์ฆ๊ฒจ์ฐพ๊ธฐ ์๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น๋ง ์กฐํ
๊ฒฐ๊ณผ๋ ์์ ์ข ๋ฅ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์. > ์ ๋ ฌ์กฐ๊ฑด1
๐งต ํ์ด1)
์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ์์ ์ข ๋ฅ๋ณ ์ฆ๊ฒจ์ฐพ๊ธฐ์ ์ต๋๊ฐ๊ณผ ๊ฐ์ด ๊ฐ์ ์๋น๋ค๋ง ์ถ๋ ฅํด๋ณด์๋ค.
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO RI1
WHERE FAVORITES = (SELECT MAX(FAVORITES)
FROM REST_INFO RI2
WHERE RI1.FOOD_TYPE = RI2.FOOD_TYPE
)
ORDER BY 1 DESC
๋ค๋ง, ์๋ธ ์ฟผ๋ฆฌ๋ ๋งค ํ๋ง๋ค ์ฆ๊ฒจ ์ฐพ๊ธฐ์ ์ต๋๊ฐ์ ์ฐพ๋ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ๊ณ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ ์คํ ์ธก๋ฉด์์๋ ๋นํจ์จ์ ์ผ ์ ์์ ๊ฒ ๊ฐ๋ค.
๐งต ํ์ด2) UNION
(๊ฐ๋ฅํ๋ ์ด์ ) : FOOD_TYPE ์ข ๋ฅ๊ฐ ์ ๊ณ , FAVORITES ์ต๋๊ฐ ๋น๊ต๊ฐ ๊ฐ๋ฅํด์ ๋์ด์ด ๊ฐ๋ฅํ๋๋ฐ ๋ ํจ์จ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ฐพ์๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE FOOD_TYPE = 'ํ์'
ORDER BY 4 DESC
LIMIT 1)
UNION
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE FOOD_TYPE = '์ค์'
ORDER BY 4 DESC
LIMIT 1)
UNION
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE FOOD_TYPE = '์ผ์'
ORDER BY 4 DESC
LIMIT 1)
UNION
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE FOOD_TYPE = '์์'
ORDER BY 4 DESC
LIMIT 1)
UNION
(SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE FOOD_TYPE = '๋ถ์'
ORDER BY 4 DESC
LIMIT 1)