39. ๐Ÿฉธ [SQL ์ฝ”ํ…Œ] - ๋ฌธ์ œ ์†์— ๋‹ต์ด ์žˆ๋‹ค!

Jasonยท2026๋…„ 1์›” 24์ผ

SQL

๋ชฉ๋ก ๋ณด๊ธฐ
31/47

SQL ๋‚ด๊ฐ€ ํ‹€๋ฆฐ ๊ฒƒ๋“ค #39 โ€” ๋ฌธ์ œ ์†์— ๋‹ต์ด ์žˆ๋‹ค!

๐ŸŽฏ ํ•ต์‹ฌ ์ธ์‚ฌ์ดํŠธ

"SQL ์ฝ”ํ…Œ๋„ ๊ฒฐ๊ตญ ์ˆ˜ํ•™, ๊ตญ์–ด, ์˜์–ด ๋ฌธ์ œ๋ž‘ ๋˜‘๊ฐ™๋‹ค!"

๋ฌธ์ œ ์†์— ๋‹ต์ด ์žˆ๋‹ค!

.
.
.
.
.
.
.


๐Ÿ’ก ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ โ†’ ์ฟผ๋ฆฌ๋กœ ๋ฒˆ์—ญํ•˜๊ธฐ

์˜ˆ์‹œ 1: ๋ถ€๋ชจ ๋ฌธ์ œ

๋ฌธ์ œ:

"์—„๋งˆx์•„๋น  ์กฐํ•ฉ์ด ์•„๋‹Œ, ์—„๋งˆ, ์•„๋น  ๊ฐ๊ฐ์˜ ๊ฐ€์žฅ ์–ด๋ฆฐ ์ž๋…€"

๋ฒˆ์—ญ:

  • "๊ฐ๊ฐ์˜" โ†’ ๋”ฐ๋กœ ๊ตฌํ•ด์„œ ํ•ฉ์ณ์•ผ๊ฒ ๋„ค!
  • ์—„๋งˆ ๋”ฐ๋กœ (motherId) + ์•„๋น  ๋”ฐ๋กœ (fatherId)
  • โ†’ UNION ALL ํ•„์š”!
(์•„๋น  ์ฟผ๋ฆฌ)
UNION ALL
(์—„๋งˆ ์ฟผ๋ฆฌ)

์˜ˆ์‹œ 2: ๋งค๋‹ˆ์ € ๋ฌธ์ œ

๋ฌธ์ œ:

"๋งค๋‹ˆ์ €๋ณ„ ๊ฐ€์žฅ ์ตœ๊ทผ ์ž…์‚ฌํ•œ ์ง์›"

๋ฒˆ์—ญ:

  • "๋งค๋‹ˆ์ €๋ณ„" โ†’ GROUP BY manager
  • manager_id ์ปฌ๋Ÿผ ํ•˜๋‚˜๋กœ ์ถฉ๋ถ„!
  • โ†’ UNION ALL ํ•„์š” ์—†์Œ!
SELECT manager.name, MAX(employee.hire_date)
FROM employees manager
JOIN employees employee ON employee.manager_id = manager.id
GROUP BY manager.id, manager.name

๐Ÿ” ๋ฌธ์ œ ์ฝ์„ ๋•Œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

ํ‚ค์›Œ๋“œ์˜๋ฏธSQL
"~๋ณ„"๊ทธ๋ฃนํ•‘ ํ•„์š”GROUP BY
"~ํ•˜์ง€ ์•Š์€"์—†๋Š” ๊ฒƒ ์ฐพ๊ธฐLEFT JOIN + IS NULL
"๊ฐ€์žฅ ~ํ•œ"์ตœ๋Œ€/์ตœ์†ŒMAX() / MIN()
"๊ฐ๊ฐ"๋”ฐ๋กœ ๊ตฌํ•ด์„œ ํ•ฉ์น˜๊ธฐUNION ALL
"์ฒซ ๋ฒˆ์งธ", "N๋ฒˆ์งธ"์ˆœ์„œROW_NUMBER()
"~์ˆ˜"๊ฐœ์ˆ˜ ์„ธ๊ธฐCOUNT()

๐Ÿ“ ์‹ค์ „ ์˜ˆ์‹œ

๋ฌธ์ œ:

"๋ชจ๋“  ์ฐจ๊ฐ€ ์ด๋ฒคํŠธ์— ์ฐธ์—ฌํ•œ ํšŒ์‚ฌ๋Š” ๊ฒฐ๊ณผ์—์„œ ์ œ์™ธ"

์ฒ˜์Œ ์ƒ๊ฐ:

"์–ด๋–ป๊ฒŒ ์ œ์™ธํ•˜์ง€...? HAVING? NOT IN?"

์ •๋‹ต:

์‚ฌ์‹ค ์ž๋™์œผ๋กœ ์ œ์™ธ๋จ!

WHERE IS NULL ํ•˜๋ฉด ๋ฏธ์ฐธ์—ฌ ์ฐจ๋งŒ ๋‚จ๋Š”๋ฐ,
๋ชจ๋“  ์ฐจ๊ฐ€ ์ฐธ์—ฌํ•œ ํšŒ์‚ฌ = ๋ฏธ์ฐธ์—ฌ ์ฐจ 0๋Œ€ = ๊ฒฐ๊ณผ์— ์•ˆ ๋‚˜์˜ด!

๊ตํ›ˆ:

๋ณต์žกํ•˜๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ๋ง๊ณ , ์ฟผ๋ฆฌ ํ๋ฆ„ ๋”ฐ๋ผ๊ฐ€๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค!


๐Ÿ”ฅ ๋ฌธ์ œ ํ‘ธ๋Š” ์ˆœ์„œ

1. ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ‘์ค„ ์น˜๊ธฐ

  • "๋ญ˜ ๊ตฌํ•˜๋ผ๊ณ ?"
  • "์–ด๋–ค ์กฐ๊ฑด?"
  • "์ •๋ ฌ ํ•„์š”?"

2. ํ•„์š”ํ•œ ํ…Œ์ด๋ธ” ํŒŒ์•…

  • "์ด ์ •๋ณด๋Š” ์–ด๋А ํ…Œ์ด๋ธ”์—?"
  • "์—ฐ๊ฒฐ๊ณ ๋ฆฌ(REFERENCES)๋Š”?"

3. ์š”๊ตฌ์‚ฌํ•ญ โ†’ SQL ๋ฒˆ์—ญ

  • "~๋ณ„" โ†’ GROUP BY
  • "~ํ•˜์ง€ ์•Š์€" โ†’ LEFT JOIN + IS NULL
  • "๊ฐ€์žฅ ~ํ•œ" โ†’ MAX/MIN

4. ์ฟผ๋ฆฌ ์ž‘์„ฑ ์ „ ํ๋ฆ„ ๊ทธ๋ ค๋ณด๊ธฐ

  • ํ…Œ์ด๋ธ” ์‹œ๊ฐํ™”!
  • JOIN ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ ๊ทธ๋ ค๋ณด๊ธฐ!

๐Ÿ† ๊ฒฐ๋ก 

์ž˜๋ชป๋œ ๋ฐฉ๋ฒ•์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•
์ผ๋‹จ ์ฟผ๋ฆฌ๋ถ€ํ„ฐ ์“ด๋‹ค๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ ๋จผ์ € ํŒŒ์•…
๋จธ๋ฆฌ๋กœ๋งŒ ์ƒ๊ฐํ…Œ์ด๋ธ” ์‹œ๊ฐํ™”
๋ณต์žกํ•˜๊ฒŒ ์ ‘๊ทผ๋ฌธ์ œ๊ฐ€ ์‹œํ‚ค๋Š” ๋Œ€๋กœ!

"๋ฌธ์ œ๊ฐ€ ๋ญ˜ ์›ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๋ฉด, ์ฟผ๋ฆฌ๋Š” ์ €์ ˆ๋กœ ๋‚˜์˜จ๋‹ค!" ๐Ÿ”ฅ

profile
Data Analyst | Thoughts Become Things. ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํ•  ์ˆ˜ ์—†๋‹ค. | www.linkedin.com/in/๋ช…์ˆ˜-์ œ-7ab843200

0๊ฐœ์˜ ๋Œ“๊ธ€