์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„(25.12.01~)

์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„_์‚ฌ์ „์บ ํ”„_data11๊ธฐ 6์กฐ ๊น€์„ ์˜_TIL_251217

0๏ธโƒฃ 2025. 12. 17. 17:43

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๊ฐ•

*๋ณธ์บ ํ”„ ์‹œ์ž‘ ์ „ ๋งˆ๋ฌด๋ฆฌ ๋ชฉํ‘œ