Leetcode SQL ๋ฌธ์ ๋ฅผ ํ์ดํ๋ฉด์, ์งง์ ์๊ฐ ์์ ๋ฌธ์ ์ ํ ํ์ ๋ฐ SQL ๊ตฌํ ์ค๋ ฅ์ ํค์ธ ์ ์์ต๋๋ค.
SQL ๋ก์ง ๊ตฌํ
SQL ํจ์ ํ์ฉ
SQL ๋ฌธ๋ฒ ์ ์ฒด์ ์ผ๋ก ๋น ๋ฅด๊ฒ ์ดํผ๊ธฐ
SQL ์ฝ๋ฉํ
์คํธ ๋ฌธ์ ํ์ด,
๋ก์ง ๊ตฌํ + ๋ค์ํ ํจ์๋ฅผ ๊ฐ์ ํ๋๋ก!
SQL์ ๋ฐฉ๋ํ ๋ฐ์ดํฐ์ ์จ์ด ์๋ ์ธ์ฌ์ดํธ์ ํธ๋ ๋๋ฅผ ์ฐพ์ ์ ์๋๋ก ๋์์ฃผ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์. ๋ด๊ฐ ์ํ๋ ๋ถ๋ถ๋ง ๋ฐ์ดํฐ์์ ์ ๋ฝ์์ ํ์ธํ ์๋ ์๊ตฌ์. SQL์ ํ์ ์ ์ธ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, SQL ๋ก์ง์ ๊ตฌํํ๊ณ ์ฌ๋ฐ๋ฅธ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๊ด๊ฑด์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ IT ํ์ฌ์ ๋ค์ด์ค๊ธฐ ์ , ํนํ ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ์ง์ข ์ด๋ผ๋ฉด ์ฝ๋ฉํ ์คํธ ์ฒซ ๊ด๋ฌธ๋ถํฐ ๋ง์ฃผ์น๋ ์ธ์ด์ ๋๋ค. ์ ์ฌ ํ์๋ ํ์์ ์ธ ์ธ์ด์ด๊ณ ์.
ํ์ง๋ง ์ด๋์๋ถํฐ ์ค๋นํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ๋์? ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฆฌ์ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ถํฐ ์์ํด์ผ ๋๋ ๋ถ๋ด๊ฐ์ด ํฌ๊ฒ ๋ค๊ฐ์ค๋์? ์ผ๋จ์ ์ฝ๋ฉํ ์คํธ์ฉ SQL ๋ฌธ์ ํ์ด๋ฅผ ๋ชฉํ๋ก ์์ํด ๋ด ์๋ค!
๐โโ๏ธ ์ฝ๋ฉํ ์คํธ ์ค๋น ์ค์ธ ์ทจ์ค์
๐โโ๏ธ SQL ํ์ด๋ฅผ ์ฐธ๊ณ ํด์ ์ค๋ฌด์ ์ ์ฉํ๊ณ ์ถ์ ๋ถ
๐โโ๏ธ ์ด๋ก ๋ณด๋ค ์์ ๋ฅผ ํตํ ํ์ต์ด ๋ ์๋ฟ๋ ๋ถ
์งง์ ์๊ฐ ์์ ์ ๋ฐ์ ์ธ SQL ๋ฌธ์ ํ์ด๋ฅผ ํ ์ ์๋๋ก, ์ด ๊ฐ์์์๋ Leetcode์ SQL Easy ๋์ด๋ ๋ฌธ์ (ํ๊ธ๋ฒ์ญ ์ ๊ณต)๋ฅผ ๋ฐ๋ผ๊ฐ๋๋ค.
์ง์์ ๊ธฐ๋ฐ์ ๋ฆ์ ํ ์ค๋ ฅ์ ํค์ฐ๊ณ ์ถ์ ๋, ์ ๋ ๋ ์ด๋ ค์ด ์ด๋ก ์ ๋ณด๊ธฐ๋ณด๋ค๋ ๋จผ์ ๊ฐ๋ฒผ์ด ๋ฌธ์ ํ์ด๋ก ์์ํด์. ๊ทธ๋ฌ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๊ฐ๋ ์ ๋ณต์ตํ๊ณ , ๋ฌธ์ ๋ฅผ ์ง์ ํ๋๊น ๋จธ๋ฆฌ ์์๋ ๋ ์ค๋ซ๋์ ๊ธฐ์ต์ ๋จ์์. ์ํ์ ์ด๋ก ๋ง ๊ณต๋ถํ๊ณ ๋ฌธ์ ํ์ด๋ฅผ ์ ํ๋ฉด ์ดํด๋์ง ์๋ ๊ฒ์ฒ๋ผ์.
SQL ๋ฌธ์ ๋ฅผ ํ ๋ฒ์ ๋ชป ํ์๋ค๊ณ ํด์ ๊ฑฑ์ ํ์ง ๋ง์ธ์. ๋ฌธ๋ฒ์ ์๋ ๊ฒ๊ณผ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ ๊ฒ ์ฌ์ด์ ๊ฐ๊ทน์ด ์๊ธฐ ๋๋ฌธ์, ์ ๋ ์ฒ์์๋ ๋ฌธ์ ๋ฅผ ํ ๋ฒ์ ๋ชป ํ์๊ณ , ์๊ฐ๋ ์ค๋ ๊ฑธ๋ ธ์ด์. ์ ํ์ ์ตํ๋ ํ๋ จ์ด ํ์ํ๊ธฐ ๋๋ฌธ์, ์ฐจ๊ทผ์ฐจ๊ทผ ๊ฐ๋ฒผ์ด ๋ง์์ผ๋ก ๋ค๊ฐ๊ฐ ์ ์๋๋ก ์ด ๊ฐ์๋ฅผ ๊ธฐํํ์ต๋๋ค. ์ฌํด SQL ์ฝ๋ฉํ ์คํธ๋ฅผ ํฅํด ์ฒซ๊ฑธ์์ ๋ผ์ด๋ณด์ธ์!
MySQL Workbench์์ ์ง์ SQL ์กฐํ + Github ์ฐ๋์ ํตํ SQL ๋ฐฑ์
Leetcode ํ๋กฌํํธ์์ ์กฐํํ ์ ์๋ SQL๋ ํ์ ์ ์ ๋๋ค. ์๊ธฐ๊ฐ ์์ฑํ SQL์ด ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋์ง ์ง์ ํ์ธํด ๋ณด๋ ๊ฒ ์ค๋ ฅ ํฅ์์ ํ์์ธ๋ฐ์. ๊ทธ๋์ ๋ฌธ์ ํ์ด์ ์์์, MySQL๋ฅผ ์ค์นํด์ Workbench์์ SQL๋ฅผ ์กฐํํ ์ ์๊ฒ ํ๊ฒฝ ์ธํ ์ ๊ฐ์ด ํด๋ณผ ๊ฑฐ์์.
๊ทธ ์ธ์๋ Github๊ณผ ์ฐ๋ํ๋ ํ๊ฒฝ ์ธํ ๋ ์งํํฉ๋๋ค. Github์ ์์ ์ ์ฝ๋๋ฅผ ์ฌ๋ ค๋์ผ๋ฉด, ์ธ์ ๋ ์ด๋์๋ ์ด๋ค ๋๋ฐ์ด์ค์ด๋ (ํธ๋ํฐ์ด๋ ๋ค๋ฅธ ์ปดํจํฐ์ด๋ ) ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐฑ์ ์ฉ๋๋ก ํฐ ๋์์ด ๋ฉ๋๋ค. Github ์ฐ๋์ ์ด๋ฒ SQL๋ฟ๋ง ์๋๋ผ, ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์๋ ํ์ฉํ ์ ์์ผ๋ ๋งค์ฐ ์ ์ฉํ ๊ฑฐ์์!
์ธ๋ถํํ SQL ๋ฌธ์ ์ ํ + ์์ ์ ๊ณต
Leetcode์ Easy ๋์ด๋ ์ค์์๋ ์ฌ์ด ๋์ด๋์ ์ด๋ ค์ด ๋์ด๋๊ฐ ์กด์ฌํฉ๋๋ค. ์ด๋ฐ์๋ ๋ ์ฌ์ด ๋์ด๋๋ฅผ ํตํด์ ๊ฐ๋ณ๊ฒ ์์ํ ๊ฒ๋๋ค. ๋์ด๋ ์ด์ธ์๋, SQL ๋ฌธ์ ๋ค์ ์ ํ๋ณ๋ก ๋๋์์ต๋๋ค. CASE WHEN, GROUP BY์ ๊ฐ์ ๋ก์ง ๊ด๋ จ ์ ํ๋ ์๊ณ , LAG, LEAD, RANK์ ๊ฐ์ ํจ์ ๊ด๋ จ ์ ํ๋ ์์ต๋๋ค. ๋๋์ด์ง ์ ํ์ ํตํด์, ๊ฐ ์ ํ์ด ์ด๋ค ํํ๋ก ์ถ์ ๊ฐ ๋๋์ง ํ๋์ ํ์ธํ ์ ์์ด์.
๊ฐ๋ ์ค๋ช ์ด ์ถ๊ฐ์ ์ผ๋ก ํ์ํ ๋ถ๋ถ์, ์๊ฐ์์ ์ํ ์ด๋ก ์์ PPT๋ ์ ๊ณต๋ฉ๋๋ค. ์์ธ๋ฌ ํผ์์ ์ถ๊ฐ ์ฐ์ตํ ์ ์๋๋ก ์ค๊ฐ์ค๊ฐ ์์ ๋ฐ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ SQL ์ค๋ ฅ์ ์ง์ ์ ๊ฒํด ๋ณด์ธ์!
๊ฐ์๋ ํฌ๊ฒ 3๊ฐ์ง Part๋ก ๋๋ฉ๋๋ค.
Leetcode์ Easy ๋์ด๋ ์ค์์ ๋ ์ฌ์ด ๋์ด๋ ๋ฌธ์ ๋ค์ ๋จผ์ ํ๋ฉด์, SQL ์ฝ๋ฉํ ์คํธ์ ์ ๋ฌธํ ์ค๋น๋ฅผ ํฉ๋๋ค.
๋ก์ง ๊ด๋ จ ๋ฌธ์ ๋ฅผ ์ ํ๋ณ(์: join, group by, not in, case when ๋ฑ)๋ก ํ์ด๋ด ๋๋ค.
MySQL Workbench๋ก SQL๋ฅผ ๋จ๊ณ๋ณ๋ก ์กฐํํ ํ์, ์ต์ข ์ฟผ๋ฆฌ๋ฅผ ๋์ถํฉ๋๋ค.
ํจ์ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ์ ํ๋ณ(์: rank, dense_rank, row_number, lag, lead ๋ฑ)๋ก ํ์ด๋ด ๋๋ค.
MySQL Workbench๋ก SQL๋ฅผ ๋จ๊ณ๋ณ๋ก ์กฐํํ ํ์, ์ต์ข ์ฟผ๋ฆฌ๋ฅผ ๋์ถํฉ๋๋ค.
Q. ์ด ๊ฐ์์ ์ฐจ๋ณ์ ์ด ๋ฌด์์ธ๊ฐ์?
Q. ๋น์ ๊ณต์๋ ๋ค์ ์ ์๋ ๊ฐ์์ธ๊ฐ์?
์๋์, ์ด ๊ฐ์๋ ๊ธฐ๋ณธ์ ์ธ SQL์ ์๋ ๋ถ๋ค์ ๋์์ผ๋ก ํฉ๋๋ค. SQL ์ฝ๋ฉํ ์คํธ๋ฅผ ์ค๋น ์ค์ธ ์ทจ์ค์์ด๋, ๋ง ๋ฐ์ดํฐ ์ง์ข ์ผ๋ก ์ทจ์ ํ์ ๋ถ๋ค๊ป ํจ์จ์ ์ธ ๊ฐ์์ ๋๋ค.
Q. ์ด ๊ฐ์๋ฅผ ๋ค ๋ฃ๊ณ ๋๋ฉด ์๊ฐ์์ธ ์ ๋ ์ด๋ ์์ค๊น์ง ์ฌ๋ผ๊ฐ ์ ์๋์?
์ค์ ์ฝ๋ฉํ
์คํธ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ , SQL ๋ฌธ์ (+๊ฐ๋ Pandas DataFrame ์ฒ๋ฆฌ ๋ฌธ์ )๊ฐ ์์ฌ ์๋๋ฐ, SQL ๋ฌธ์ ๋ค์ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์์! (์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์์ ๋ณ๋ณ๋ ฅ ์๋ ๋ฌธ์ ๊ฐ ๋์ต๋๋ค.)
๊ฐ์๋ฅผ ์ ๋ฐ๋ผ์ค์๊ณ , ์ฝ๋ฉํ
์คํธ ์์ ์ผ ์ด์ ์ Github์ ์ฌ๋ ค๋์ ์ฝ๋๋ฅผ ๋ณต์ต ํ์ ์ํ์ ๋ณธ๋ค๋ฉด, SQL ๋ถ๋ถ์์๋ ๋ฌด๋ฆฌ ์์ด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ ์์ค์ด ๋ฉ๋๋ค.
ํ์ต ๋์์
๋๊ตฌ์ผ๊น์?
์ปดํจํฐ๊ณตํ ์ ๊ณต์
์ฝ๋ฉํ ์คํธ ์ค๋น ์ค์ธ ์ทจ์ค์
๋ฐ์ดํฐ ๋ถ์๊ฐ
์ ์ ์ง์,
ํ์ํ ๊น์?
SQL
663
๋ช
์๊ฐ์
84
๊ฐ
์๊ฐํ
36
๊ฐ
๋ต๋ณ
4.8
์
๊ฐ์ ํ์
4
๊ฐ
๊ฐ์
์ํ์ผ๋ก ์์ํ์ฌ ๊ฐ๋ฐ์ ์ปค๋ฆฌ์ด ์ดํ, ํต๊ณ ๊ณต๋ถ๋ฅผ ํตํด ํ์ฌ๋ ๋ฐ์ดํฐ ๋ถ์๊ฐ๋ก ์ ์ฐฉํ Gemma ์ ๋๋ค. ๋ฐ์ดํฐ ๋ถ์์ ํ๋ฅด๊ณ ๋์น๋ ๋น ๋ฐ์ดํฐ ์์์ ์ฐธ์ ํ ์ธ์ฌ์ดํธ์ ํธ๋ ๋๋ฅผ ํ์ ํ๋๊ฒ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋ง์ด์ผ ์ฝ์ฃ ? ํ์ง๋ง ์ ์ ํ ๋ถ์ํด๊ณผ ๋ฐฉ๋ฒ์ ํ์ฉํ ์ ์๋ค๋ฉด ์ถฉ๋ถํ ๋๊ตฌ๋ ๊ท์คํ ๋ณด์์ ๋ฐ๊ฒฌํ ์ ์์ด์. ์ด๋ฌํ ๋ฐฉ๋ฒ๋ก ์ ์ฌ๋ฌ๋ถ์๊ฒ ๊ณต์ ํ๊ณ ์ ํฉ๋๋ค.
(ํ) ๋ฐ์ดํฐ ๋ถ์๊ฐ
ํ์ฌ ์ํ๊ณผ ์กธ์ , ์์ฌ ํต๊ณํ ์กธ์
https://blog.naver.com/italian-lesson
(๊ฐ์ธ ๋ธ๋ก๊ทธ)
์ ์ฒด
40๊ฐ โ (2์๊ฐ 5๋ถ)
ํด๋น ๊ฐ์์์ ์ ๊ณต:
1. ๊ฐ์ ์๊ฐ
04:26
6. where
08:59
8. join
07:24
10. group by
05:00
12. having
04:25
14. min, max
01:22
16. in
04:20
18. not in
05:16
24. group by
07:02
26. min, max
03:43
28. not in
06:02
30. case when
06:20