1. ์ค๋์ ํ์ต
sql ์๊ฐ!! ๋๋์ด!

2. ํ์ต ๋ด์ฉ ์ ๋ฆฌ
2-1. SQL ๋ฌธ์ ์ค๋ต๋
ธํธ
(๋์ด๋: ๊ฐ์ด๋ ค์ ์ ;; ๐ด) / ๊ทธ๋๋ ํ์ด์ ๋ฟ๋ฏ ๐
1) case when ๋ฌธ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๊ธฐ
- ๋ง์ง๋ง์ end ๋ถ์ด๊ธฐ ๊ธฐ์ต!!
- ์ปฌ๋ผ์ ๋๋ ์ ๋ฝ์์ผ ํ๋ฉด case ๋๋ ์ ์กฐ๊ฑด ๋ฌ๊ธฐ.
- ๋ถ๋ฑํธ๋ก ๋ฒ์์ง์ ํด๋ ๋์ง๋ง between ๊ธฐ์ตํ๊ธฐ!
2) ์๋ธ ์ฟผ๋ฆฌ๋ฌธ
- ์๋ธ ์ฟผ๋ฆฌ๋ฌธ์์ join์ผ๋ก ๊ฐ์ ธ์จ ํ ์ด๋ธ์ ๋ณ๋ช ๋ ๊ฐ์ด ๊ธฐ์ฌ(ex. f.customer_id=c.customer_id) / ๋จ ์๋ธ์ฟผ๋ฆฌ ๋ฐ์์๋ ๊ทธ๋ฅ ์จ๋ ๋จ. or ์๋ธ์ฟผ๋ฆฌ๋ฌธ ๋ณ๋ช ์ ๋ฌ์์ ์ฌ์ฉ.
3) avg ์ฌ์ฉ ์, group by ๊ฐ์ด ์ฌ์ฉํด์ค์ผ ํจ!! (๋น์ฐํ ๊ฑธ ํ๋ฒ ํ๋ ค๋ด์ผ ์๋..?)

2-2. SQL ํผ๋ฒํ ์ด๋ธ ๋ง๋ค๊ธฐ
- ์๋ธ์ฟผ๋ฆฌ์์ case when์ ์ฌ์ฉํด์ ์ต๋ํ ๊ฐ๋จํ๊ฒ ๋ง๋ ํ, ๋ณธ ์ฟผ๋ฆฌ์์ max(if())๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ๋จํ ์ฟผ๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ํ๋ ๊ฒ ํต์ฌ
2-3. ์ฃผ์ ํจ์
- ํผ๋ฒํ ์ด๋ธ : ํ์ผ๋ก ์ฌ ๊ฒ ๋จผ์ ์ ๊ณ ๊ทธ ์ดํ์ max(if()) "์ปฌ๋ผ ๋ณ๋ช "
- window ํจ์ rank()/sum() + over()
- ๋ญํน ์ ํ๊ธฐ: rank() over(partition by ์ด๋ค ์ปฌ๋ผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ๋๋ ์ ๋ณผ ๊ฑด์ง order by ์ ๋ ฌ๊ธฐ์ค)
- ์นดํ ๊ณ ๋ฆฌ๋ณ ํฉ: sum(์ด๋ค ์ปฌ๋ผ์ ํฉ์น ๊ฑด์ง) over(partition by ์ด๋ค ์ปฌ๋ผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ๋๋ ์ ๋ณผ ๊ฑด์ง)
- ์นดํ ๊ณ ๋ฆฌ๋ณ ๋์ ํฉ: sum(์ด๋ค ์ปฌ๋ผ์ ํฉ์น ๊ฑด์ง) over(partition by ์ด๋ค ์ปฌ๋ผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ๋๋ ์ ๋ณผ ๊ฑด์ง order by ์ ๋ ฌ๊ธฐ์ค)
3. ๋ด์ผ์ ํ์ต
ํต๊ณํ ๊ฐ์ ํ์ต ํ๋ (์ด 6๊ฐ)
- 18์ผ(๋ชฉ) 1~2๊ฐ
- 19์ผ(๊ธ) 3~4๊ฐ
- 20์ผ(ํ ) 5~6๊ฐ
*๋ณธ์บ ํ ์์ ์ ๋ง๋ฌด๋ฆฌ ๋ชฉํ