SQL ๋ถ์ ์ ๋ฌธ๊ฐ๋ก ๋๊ธฐ ์ํ ์ฒซ๊ฑธ์! ๐ช
์์ธํ ๊ฐ์์ ์ค์ต์ผ๋ก ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ค์ ธ๋ณด์ธ์.
๋ฐ์ดํฐ์ ์ ๊ทผํ๋
๊ฐ์ฅ ๊ธฐ๋ณธ ๊ธฐ์ , SQL.
๋๋ถ๋ถ์ ๊ธฐ์
๋ฐ์ดํฐ๋ RDBMS์ ์ ์ฅ๋์ด ์๊ณ , SQL์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ ๊ธฐ์ ์
๋๋ค. ๋๋ฌธ์ ๊ธฐ์
๋ฐ์ดํฐ ๋ถ์์ ํต์ฌ์ SQL์ ํ์ฉํ๋ ๊ฒ์์๋ถํฐ ์์ํฉ๋๋ค.
ํ์ง๋ง SQL์ ๊ธฐ์
๋ฐ์ดํฐ ๋ถ์์ ์์ ์์ฌ๋ก ํ์ฉํ ์ ์๋ ์์ค์ ๊ฐ์ถ ๋ฐ์ดํฐ ๋ถ์๊ฐ๋ฅผ ์ฐพ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. SQL์ ๋ฐฐ์ธ ๋ ๋ฌธ๋ฒ๊ณผ ๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์์๋ง ์ ๊ทผํ๊ฒ ๋๋ฉด, ์ค์ ์์ ์กฐ๊ธ๋ง ์ด๋ ค์ด ๋ฐ์ดํฐ ๊ฐ๊ณต๊ณผ ์งํฉ ๋ ๋ฒจ์ ๋ณ๊ฒฝ ๋ฑ์ด ํฌํจ๋ ๋ถ์ ์๊ฑด์ ๋ง๋๊ฒ ๋ ๋ ์ข์ ํ๊ฒ ๋ฉ๋๋ค.
๋ถ์ SQL,
์ ๋๋ก ํ๊ณ ์ถ๋ค๋ฉด?
๋ถ์ SQL์ ์ํ๊ธฐ ์ํด์๋ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ์งํฉ์ ๋ ๋ฒจ๋ก ์์ ์์ฌ๋ก ๊ฐ๊ณตํ๊ณ ๋ง๋ค์ด ๋ผ ์ ์๋ ๋ฅ๋ ฅ์ ๊ฐ์ถฐ์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด์ ๋ค์ํ ์ ํ์ ์กฐ์ธ ๋ฐ Group by์ ์ง๊ณ ํจ์, ๊ทธ๋ฆฌ๊ณ Analytic SQL์ด ๋์ํ๋ ๋ฉ์ปค๋์ฆ์ ์ดํดํ๋ฉด์ SQL์ ์์ฑํ๋ ๋ฅ๋ ฅ์ ํค์์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋์ ๋ง์ ์ค์ต์ ํตํด ์ด๋ฅผ ์ฒด๋ํ ์ ์์ด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ ๋ถ์ SQL Fundamentals ๊ฐ์๋ โ
๋ฐ์ดํฐ ๋ถ์ SQL Fundamentals๋ ์ฌ๋ฌ๋ถ์ SQL ๋ถ์ ์ ๋ฌธ๊ฐ๋ก ์ฑ์ฅ์์ผ๋๋ฆฌ๊ธฐ ์ํ ์๋ฆฌ์ฆ ๊ฐ์์ Part 1์
๋๋ค. ๋ณธ ๊ฐ์์์๋ JOIN๊ณผ Group by, ์ง๊ณํจ์, Analytic SQL์ ํต์ฌ ๋ด์ฉ๊ณผ ๋งค์ปค๋์ฆ์ ์์ธํ ๊ฐ์์ ์ค์ต์ผ๋ก ์ฒด๋ํ ์ ์๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
ํ์ ์๋ฆฌ์ฆ: ๋ค์ํ ์ฌ๋ก๋ก ์ตํ๋ SQL ๋ฐ์ดํฐ ๋ถ์
Part 2 ๊ฐ์์ธ '๋ค์ํ ์ฌ๋ก๋ก ์ตํ๋ SQL ๋ฐ์ดํฐ ๋ถ์'์์๋ ๋ค์ํ ์ ํ์ ๋งค์ถ ๋ถ์, ์ฃผ๋ฌธ ๋ถ์ ๋ฟ๋ง ์๋๋ผ ๊ตฌ๊ธ Analytics ์ ํ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์น์ฌ์ดํธ ์ ์ ๋ฐ ์ฌ์ฉ ๋ถ์๊ณผ ์น์ฌ์ดํธ ํผํฌ๋จผ์ค ๋ถ์์ SQL๋ก ์ํํด ๋ด
๋๋ค. ์ธ์
๊ณผ DAU/WAU/MAU, Device๋ณ/๊ด๊ณ ์ฑ๋๋ณ ํธ๋ํฝ ์์ค ๋ถ์, Landing ํ์ด์ง ๋ถ์, ์ดํ์จ๊ณผ ํ์ถ์จ ์ง๊ณ, RFM ๋ถ์, ์์กด์จ(Retention Rate)๊ณผ ํผ๋ ๋ถ์ ๋ฑ ํ์ฑํ ๋ถ์ ์ฃผ์ ๋ก ์ฌ๋ฌ๋ถ์ ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
์ค์ ๋ถ์์ ์ํ ํต์ฌ ๋ฌด๊ธฐ,
Analytic SQL!
Window Function์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ Analytic SQL์ ํธ๋ฆฌํ๊ณ ์ ์ฐํ ๋ถ์ ํ์ฉ์ฑ๊ณผ ๊ณ ๊ธ ํต๊ณ ๊ธฐ๋ฅ๋ฑ์ผ๋ก SQL์ด ๊ธฐ์
๋ฐ์ดํฐ ๋ถ์์ ์ค์ฌ์ผ๋ก ์๋ฆฌ์ก๋๋ฐ ํฐ ์ญํ ์ ํ์์ต๋๋ค. ๋ณธ ๊ฐ์์์๋ ์ค์ ์์ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฑฐ์ ๋๋ถ๋ถ์ Analytic SQL์ ์ค๋ช
๋๋ฆฝ๋๋ค.
ํนํ Analytic SQL์ ๋ณด๋ค ์ฝ๊ฒ ์ดํด์์ผ๋๋ฆฌ๊ธฐ ์ํด ๋ค์ํ ์๊ฐ์๋ฃ๋ฅผ ์ค๋นํ์์ต๋๋ค. ๋ํ ์ ์ฉ์ ์ ์์ฌํญ ๋ฐ ์ฌ๋ฌ ๊ฐ์ง ์ ํ์ ์ค์ต SQL์ ํตํด Analytic SQL์ ๋ง์คํฐํ ์ ์๋๋ก ๋์๋๋ฆด ๊ฒ์
๋๋ค.
์ด ๊ฐ์์ ํน์ง โจ
ํต์ฌ SQL ๋์ ๋งค์ปค๋์ฆ์ ๋ํ ํ๋ถํ ์ค๋ช
๋ค์ํ ์ ํ์ ์กฐ์ธ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง, Group by์ Analytic SQL์ด ๋์ ๋ฉ์ปค๋์ฆ์ ์ด๋ป๊ฒ ๋๋์ง ํ๋ถํ ์ค๋ช
์๋ฃ๋ก ์์ธํ ์ค๋ช
๋๋ฆฝ๋๋ค.
ํต์ฌ ์ดํด + ์ฌํ ๋ด์ฉ์ด ๊ฒฐํฉ๋ ๋ค์ํ ์ค์ต ๋ฌธ์
์ฃผ์ SQL ์ค์ต์ ๋ผ์ด๋ธ ์ฝ๋ฉ์ผ๋ก ๊ตฌ์ฑํ์๊ณ , ํต์ฌ์ ์ดํดํ๋ฉด์๋ ์ฌํ๋ ๋ด์ฉ์ ๋ฐฐ์ธ ์ ์๊ฒ ๋ค์ํ ์ค์ต ๋ฌธ์ ๋ฅผ ์ค๋นํ์์ต๋๋ค.
Analytic SQL - ์ด๋ณด๋ค ์์ธํ๊ฒ ์ค๋ช
ํ ์ ์๋ค
Analytic SQL์ ์ฃผ์ ๊ตฌ์ฑ ์์์ธ Partition, Sort, Window๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ์์ธํ ์๊ฐ์๋ฃ๋ก ์ค๋ช
ํฉ๋๋ค. ๋ํ Analytic SQL ์ ๊ฐ๊ณผํ๊ธฐ ์ฌ์ด ์ค๋ฅ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆฝ๋๋ค.
๋ณด๋์ค! 100ํ์ด์ง ๋ถ๋์ ๊ฐ์ ๊ต์ฌ ์ ๊ณต
ํผ์์๋ ๋ฌด๋ฆฌ์์ด ๋ด์ฉ์ ์ถฉ๋ถํ ์ดํดํ ์ ์๋๋ก 100ํ์ด์ง ๋ถ๋์ ๊ฐ์ ๊ต์ฌ์ ์ค์ต์ฉ SQL ์ฝ๋ ๋ฐ ๋ฐ์ดํฐ์
์ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
์ค์ต ํ๊ฒฝ์
ํ์ธํด๋ณด์ธ์ ๐ป
์ค์ต ํ๊ฒฝ DBMS๋ก๋ PostgreSQL์, SQL Editor๋ DBeaver๋ฅผ ์ฌ์ฉํฉ๋๋ค.
PostgreSQL์ ์คํ์์ค DBMS๋ก ๋ฌด๋ฃ๋ก ์ ๊ณต๋๋ฉฐ, ์์ ์ฑ๊ณผ ์ฑ๋ฅ, ๊ทธ๋ฆฌ๊ณ ๋ฌด์๋ณด๋ค๋ ํ๋ถํ SQL ์ง์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. Ansi SQL ๊ท๊ฒฉ์ ๋ง์กฑ์ํค๋ฉด์๋ ๋ค์ํ SQL ํจ์ ๊ทธ๋ฆฌ๊ณ Analytic์ ๋ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ด์ ์จ๋ผ์ธ ๋ฟ๋ง ์๋๋ผ ๋ถ์์ฉ DBMS๋ก๋ ๋ง์ด ํ์ฉ๋๊ณ ์์ต๋๋ค.
DBeaver ์ปค๋ฎค๋ํฐ ๋ฒ์ ์ ๋ฌด๋ฃ์ด์ง๋ง ์ฌ๋งํ ์์ฉ SQL Editor๋ณด๋ค ๋ฐ์ด๋ ๊ธฐ๋ฅ๊ณผ ๋น ๋ฅธ ์ฑ๋ฅ ๊ทธ๋ฆฌ๊ณ ์์ ์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. DBeaver๋ PostgreSQL๋ฟ๋ง ์๋๋ผ MySQL, Oracle ๋ฑ ๋ค์ํ DBMS๋ฅผ ์ง์ํฉ๋๋ค.
๐ข ๊ฐ์ ์๋ฃ ๋ค์ด๋ก๋ ์๋ด
- ๊ฐ์ ๊ต์ฌ(PDF), ์ค์ต์ฉ SQL ์ฝ๋ ๋ฐ ๋ฐ์ดํฐ๋ ์น์
0: ๊ฐ์ ์๊ฐ์ ์ค์ต ํ๊ฒฝ ๊ตฌ์ฑ์ [๊ฐ์ ๊ต์ฌ ๋ฐ ์ค์ต ์ฝ๋ ๋ค์ด๋ก๋] ์์
์์ ๋ค์ด๋ก๋ ๋ฐ์ผ์ค ์ ์์ต๋๋ค.
Q&A ๐ก
Q. SQL์ ์ ํ ๋ชจ๋ฅด๋ ์ฌ๋๋ ์๊ฐ์ด ๊ฐ๋ฅํ๊ฐ์?
SQL์ ๋ํด ์งค๋งํ ๊ธฐ๋ณธ ์ง์์ด ์๋ ๋ถ์ ์ํ ๊ฐ์์
๋๋ค. Select๋ where์ , Order by์ ๋๋ ์๊ณ ๊ณ์๋ค๋ ์ ์ ๋ก ๊ฐ์๋ฅผ ์งํํ๊ธฐ ๋๋ฌธ์ ์กฐ์ธ๋ถํฐ ๊ฐ์๊ฐ ์์๋ฉ๋๋ค. ๋ง์ฝ SQL์ ๋ํด์ ์ฒ์์ด์๋ผ๋ฉด ์ ํ๋ธ๋ ์ธํ๋ฐ์์ 1~2 ์๊ฐ ๋ด์ธ์ ๊ธธ์ง ์์ SQL ๊ธฐ์ด ์
๋ฌธ ๊ฐ์๋ฅผ ๋ค์ผ์ค ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค. ๊ฐ์ ์๊ฐ ์์์ 5๋ถ์ฏค์์ ์ฌ์ ์๊ฐ ์ง์์ ๋ํด์ ์ข ๋ ์์ธํ ์ค๋ช
๋๋ฆฌ๊ณ ์์ต๋๋ค.
Q. ์ดํ์ ์ถ์๋๋ "๋ค์ํ ์ฌ๋ก๋ก ์ตํ๋ SQL ๋ฐ์ดํฐ ๋ถ์" ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์ํด์๋ ์ด ๊ฐ์๋ฅผ ๋จผ์ ๋ค์ด์ผ ํ๋์?
์์ฝ๊ฒ๋, ์ดํ์ ์ถ์ํ ๋ค์ํ ์ฌ๋ก๋ก ์ตํ๋ SQL ๋ฐ์ดํฐ ๋ถ์ ๊ฐ์๋ ๋ณธ ๊ฐ์์์ ์ค๋ช
๋๋ฆฌ๋ ๋ด์ฉ์ ์ด๋์ ๋ ์๊ณ ๊ณ์๋ค๋ ์ ์ ํ์์ ๊ฐ์๋ฅผ ์งํํฉ๋๋ค. ๋ค์ํ ์ฌ๋ก๋ก ์ตํ๋ SQL ๋ฐ์ดํฐ ๋ถ์ ๊ฐ์ ์๊ฐ์ ์ํ ์ ์ ์ง์์ ํด๋น ๊ฐ์ ์ปค๋ฆฌํ๋ผ ์น์
0์ ๊ฐ์ ์๊ฐ์ ๋ฐ์ดํฐ ๋ถ์ SQL Fundamentals ๋ฏธ ์๊ฐ์๋ฅผ ์ํ ๊ฐ์ ์ ํ ๊ฐ์ด๋๋ฅผ ๋ฏธ๋ฆฌ ๋ณด์๊ณ , ๊ฐ์ ์ ํ ์ ์ฐธ์กฐ ๋ถํ๋๋ฆฝ๋๋ค.
์ง์๊ณต์ ์๋ก๋ถํฐ ์จ ํธ์ง ๐
๋ฐ์ดํฐ ๋ถ์ ์์ญ์์ ์ด๋ป๊ฒ ํ๋ฉด ๋ฐ์ดํฐ ๋ถ์ ๋ฅ๋ ฅ๊ณผ SQL ํ์ฉ ๋ฅ๋ ฅ์ ๋์์ ํฅ์์ํฌ ์ ์์๊น? ์ค๋ซ๋์ ๊ณ ๋ฏผํด ์์ต๋๋ค(๊ทธ๋์ ๋จธ๋ฆฌ๊ฐ ๋๋ฌด ๋น ์ง๋ ๋ถ์์ฌ๊ฐ....).
์ด ๋ ๋ง๋ฆฌ ํ ๋ผ๋ฅผ ๋ค ์ก๊ธฐ ์ํด์ ์ฌ๋ฌ๊ฐ์ง ์ ํ์ ์ค์ ๋ฐ์ดํฐ ๋ถ์ ์งํ, ํ์
์์ ์ํ๋ ๋ค์ํ ๋ถ์ ์๊ตฌ์ฌํญ์ SQL๋ก ๊ตฌํํ๋ฉด์ ์ค๋ ฅ์ ํญ์์ํค๋ ๊ฐ์๋ฅผ ๋ ๊ฐ์ ์๋ฆฌ์ฆ ๊ฐ์๋ก ์ถ์ํ ์์ ์
๋๋ค.
๊ทธ ์ฒซ ๋ฒ์งธ๋ก, ์ด๋ฒ์ ์ถ์ํ๋ '๋ฐ์ดํฐ ๋ถ์ SQL Fundamentals' ๊ฐ์๋ SQL์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ๋ฉ์ปค๋์ฆ์ ๋ํ ์์ธํ ์ค๋ช
๊ณผ ๋ค์ํ ์ค์ต์ ํตํด ์ฌ๋ฌ๋ถ์ SQL ์ญ๋์ ํํํ ๋ค์ง ์ ์๋๋ก ๊ตฌ์ฑํ์์ต๋๋ค.
ํนํ, ๋ฐ์ดํฐ ๋ถ์์ ์ํ SQL ํต์ฌ ๋ฌด๊ธฐ์ธ Analytic SQL์ ๋ํด์ A๋ถํฐ Z๊น์ง ์์ธํ๊ฒ ์ค๋ช
๋๋ฆฌ๊ธฐ์ ์ฌ๋ฌ๋ถ์ด ์ด๋ ์๋ฆฌ์์๊ฑด Analytic SQL์ ๋ํ ๋จ๋จํ ์์ ๊ฐ์ ๊ฐ์ง์ค ์ ์์ ๊ฒ์
๋๋ค.
๋ณธ ๊ฐ์๊ฐ ์ฌ๋ฌ๋ถ์ SQL ์ค๋ ฅ์ ์ผ์ทจ์์ฅํ ์ ์๋ ์์คํ ์๊ฐ์ด ๋ ์ ์๋๋ก ๊ฐ์๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์์ด๊ณ ๊ฐ์์์ ๋ต ์ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
๊ทธ๋ผ, ์ ๋ ๊ณง ์ด์ด์ ์ถ์๋๋ '๋ค์ํ ์ฌ๋ก๋ก ์ตํ๋ SQL ๋ฐ์ดํฐ ๋ถ์' ๊ฐ์๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ฌ ํ๋ฆฌ๋ฆญ ์ฌ๋ผ์ง๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.