SQL

[SQL] (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/MySQL/Level 3)_์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹๋‹น ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ

minjgziii 2024. 1. 26. 16:49

๐Ÿ“ ๋ฌธ์ œ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

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' ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ