[SQL] (ํ๋ก๊ทธ๋๋จธ์ค/MySQL/Level 3)_์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น ์ ๋ณด ์ถ๋ ฅํ๊ธฐ
๐ ๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ํ์ด
๊ณ ๋ คํด์ผ ํ ์กฐ๊ฑด๋ค๋ถํฐ ์ดํด๋ณด์!
1. ์์ ์ข
๋ฅ๋ณ๋ก ์ฆ๊ฒจ์ฐพ๊ธฐ ์๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น์
=> ์์ ์ข
๋ฅ๋ง๋ค ์ฆ๊ฒจ์ฐพ๊ธฐ ์๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น ํ๋๋ง ๊ฐ์ ธ์ค๊ธฐ
2. ์์ ์ข ๋ฅ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
๋ด๊ฐ ์ฒ์ ์ด ์ฝ๋๋
1๋ฒ ์กฐ๊ฑด์ ์ํด MAX()๋ฅผ ์ด์ฉํ์๋ค.
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITES
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
์ผํ ๋ณด๋ฉด ์ ๋ต๊ณผ ์ผ์นํด ๋ณด์ด์ง๋ง, ์ผ์์ ๊ฒฝ์ฐ ์ ๋ต๊ณผ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
์ด๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ์ด์ ๋
GROUP BY๋ก ๋ฌถ์ผ๋ฉด ๊ฐ์ฅ ์๋จ์ ์๋ ๋ฐ์ดํฐ๋ค์ ์์๋ก ๊ฐ์ ธ์จ๋ค.
๋ฐ๋ผ์, SELECT์ MAX๋ฅผ ํด๋ ์ต๋๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒ ์๋๋ผ ๊ทธ๋ฃนํ๋ ํ ์ด๋ธ ๊ฐ์ฅ ์๋จ์ ์๋ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
์ด ๋ฌธ์ ์ ํต์ฌ์,
โ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด ์ต๋๊ฐ์ ๋ฐ๋ก ์ฐพ์์ฃผ์ด์ผ ํ๋ค โ
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES)
IN
(SELECT FOOD_TYPE, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE)
ORDER BY FOOD_TYPE DESC
๋ณต์กํด ๋ณด์ด๋ ์ด ์ฟผ๋ฆฌ๊ฐ ์ด๋ค ์์๋ก ์งํ๋๋์ง ์ดํด๋ณด์.
๊ทธ ์ ์ ์ฐธ๊ณ ํ SQL์ ์ฟผ๋ฆฌ ์คํ ์์ ๊ด๋ จ :
sql ์ ์ฟผ๋ฆฌ ์คํ ์์
์๋ธ์ฟผ๋ฆฌ์ ๋ํ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์จ์ผํ์ง ์ดํด๊ฐ ์๋ฌ๋๋ฐ ์คํ ์์๋๋ฌธ์ ๊ทธ๋ฐ๊ฒ์ด์๋ค ใ ใ ใ ๊ทธ๋ฐ ๊ธฐ๋ ์ผ๋ก ๋ ์ก๊ณ ํ๋ฒ ์คํ์์ ์ ๋ฆฌํด๋ด ๋๋ค 1.FROM ์ (+ Join) ๊ฐ์ฅ ๋จผ์
monawa.tistory.com
1. FROM REST_INFO : REST_INFO ํ ์ด๋ธ์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
2. GROUP BY FOOD_TYPE : 'FOOD_TYPE' ์นผ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ ๊ทธ๋ฃนํ
=> ๊ฐ 'FOOD_TYPE'์ ์๋น๋ค์ด ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์
3. SELECT FOOD_TYPE, MAX(FAVORITES) : ๊ฐ ๊ทธ๋ฃน์์ 'FAVORITES'์ ์ต๋๊ฐ์นใน ์ฐพ๊ณ ํด๋นํ๋ 'FOOD_TYPE' ์ ํ
4. IN : ์๋ธ ์ฟผ๋ฆฌ๊ฐ ์์ฑ๋์๊ณ , ์ด ๊ฒฐ๊ณผ๊ฐ ๋ฐ๊นฅ์ชฝ ์ฟผ๋ฆฌ์ WHERE ์กฐ๊ฑด๊ณผ ๋งค์น๋๋์ง ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉ
5. WHERE (FOOD_TYPE, FAVORITES) IN : ๋ฐ๊นฅ ์ฟผ๋ฆฌ์์ 'FOOD_TYPE'๊ณผ 'FAVORITES'๊ฐ ๋ด๋ถ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ์ผ์นํ๋ ํ๋ค์ ์ ํํฉ๋๋ค. ์ด๋ ๊ฐ 'FOOD_TYPE' ๋ง๋ค ์ฆ๊ฒจ์ฐพ๊ธฐ ์๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น๋ง์ ์ถ์ถํ๋ ์์
6. SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES : ์ ํ๋ ํ๋ค์์ 'FOOD_TYPE', 'REST_ID', 'REST_NAME', 'FAVORITES' ์นผ๋ผ์ ์ ํ
7. ORDER BY FOOD_TYPE DESC : ๊ฒฐ๊ณผ๋ฅผ 'FOOD_TYPE' ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ