Search

MySQL ๊ทธ๋ฃนํ•จ์ˆ˜

MySQL ๊ทธ๋ฃนํ•จ์ˆ˜ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๊ธฐ!

์ด๋ฒˆ ์˜์ƒ์—์„œ๋Š” MySQL์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” **๊ทธ๋ฃนํ•จ์ˆ˜(์ง‘๊ณ„ํ•จ์ˆ˜)**๋ฅผ ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ๋ฐฐ์›Œ๋ด…๋‹ˆ๋‹ค. ๊ทธ๋ฃนํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ์•„์„œ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ•จ์ˆ˜์˜ˆ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ง์› ์ˆ˜๋ฅผ ์„ธ๊ฑฐ๋‚˜, ๊ธ‰์—ฌ์˜ ํ•ฉ๊ณ„์™€ ํ‰๊ท , ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

1.
๊ทธ๋ฃนํ•จ์ˆ˜๋ž€? [00:00:13]
2.
๊ธฐ๋ณธ ๊ทธ๋ฃนํ•จ์ˆ˜ ์‚ฌ์šฉ๋ฒ• (COUNT, MAX, MIN, SUM, AVG) [00:01:15]
3.
๋ถ€์„œ๋ณ„ ๊ทธ๋ฃนํ•จ์ˆ˜ ์ ์šฉํ•˜๊ธฐ (GROUP BY) [00:04:34]
4.
๊ทธ๋ฃน์ปจ์บฃ(GROUP_CONCAT)์œผ๋กœ ๋ฌธ์ž์—ด ํ•ฉ์น˜๊ธฐ [00:08:15]
5.
๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ [00:10:35]

๊ทธ๋ฃนํ•จ์ˆ˜๋ž€? [00:00:13]

โ€ข
๊ทธ๋ฃนํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌ ํ–‰(๋ฐ์ดํ„ฐ)์„ ๋ชจ์•„์„œ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜์˜ˆ์š”. ๊ทธ๋ž˜์„œย ์ง‘๊ณ„ํ•จ์ˆ˜๋ผ๊ณ ๋„ ๋ถˆ๋Ÿฌ์š”.
โ€ข
๋Œ€ํ‘œ์ ์ธ ๊ทธ๋ฃนํ•จ์ˆ˜:
โ—ฆ
COUNT: ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
โ—ฆ
SUM: ํ•ฉ๊ณ„ ๊ตฌํ•˜๊ธฐ
โ—ฆ
AVG: ํ‰๊ท  ๊ตฌํ•˜๊ธฐ
โ—ฆ
MAX: ์ตœ๋Œ€๊ฐ’ ๊ตฌํ•˜๊ธฐ
โ—ฆ
MIN: ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๊ธฐ
์˜ˆ๋ฅผ ๋“ค์–ด, ์ง์› ํ…Œ์ด๋ธ”์—์„œ ์ง์› ์ˆ˜๋ฅผ ์„ธ๊ฑฐ๋‚˜, ๊ธ‰์—ฌ์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•  ๋•Œ ์”๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ทธ๋ฃนํ•จ์ˆ˜ ์‚ฌ์šฉ๋ฒ• (COUNT, MAX, MIN, SUM, AVG) [00:01:15]

โ€ข
์ง์› ์ˆ˜ ์„ธ๊ธฐ:
SELECT COUNT(*) FROM employees;
SQL
๋ณต์‚ฌ
โ†’ ์ง์›์ด ์ด ๋ช‡ ๋ช…์ธ์ง€ ์•Œ๋ ค์ค˜์š”.
โ€ข
์ตœ๋Œ€ ๊ธ‰์—ฌ ๊ตฌํ•˜๊ธฐ:
SELECT MAX(salary) FROM employees;
SQL
๋ณต์‚ฌ
โ†’ ๊ฐ€์žฅ ๋†’์€ ๊ธ‰์—ฌ๊ฐ€ ์–ผ๋งˆ์ธ์ง€ ์•Œ๋ ค์ค˜์š”.
โ€ข
์ตœ์†Œ ๊ธ‰์—ฌ ๊ตฌํ•˜๊ธฐ:
SELECT MIN(salary) FROM employees;
SQL
๋ณต์‚ฌ
โ†’ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ธ‰์—ฌ๊ฐ€ ์–ผ๋งˆ์ธ์ง€ ์•Œ๋ ค์ค˜์š”.
โ€ข
๊ธ‰์—ฌ ํ•ฉ๊ณ„์™€ ํ‰๊ท  ๊ตฌํ•˜๊ธฐ:
SELECT SUM(salary), AVG(salary) FROM employees;
SQL
๋ณต์‚ฌ
โ†’ ๋ชจ๋“  ์ง์› ๊ธ‰์—ฌ๋ฅผ ๋”ํ•œ ๊ฐ’๊ณผ ํ‰๊ท  ๊ธ‰์—ฌ๋ฅผ ์•Œ๋ ค์ค˜์š”.

๋ถ€์„œ๋ณ„ ๊ทธ๋ฃนํ•จ์ˆ˜ ์ ์šฉํ•˜๊ธฐ (GROUP BY) [00:04:34]

โ€ข
GROUP BYย ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํŠน์ • ๊ธฐ์ค€๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์–ด์„œ ๊ทธ๋ฃนํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด, ๋ถ€์„œ๋ณ„๋กœ ๊ธ‰์—ฌ์˜ ํ•ฉ๊ณ„, ํ‰๊ท , ์ตœ๋Œ€, ์ตœ์†Œ๋ฅผ ๊ตฌํ•  ๋•Œ:
SELECT department_id, MAX(salary), MIN(salary), SUM(salary), AVG(salary) FROM employees GROUP BY department_id;
SQL
๋ณต์‚ฌ
โ€ข
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ถ€์„œ๋ณ„๋กœ ๊ธ‰์—ฌ ์ •๋ณด๋ฅผ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.
โ€ข
์‹œํ—˜์ด๋‚˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ "OO๋ณ„"์ด๋ผ๋Š” ํ‘œํ˜„์ด ๋‚˜์˜ค๋ฉด, ๋ฐ”๋กœ ์ดย GROUP BY๋ฅผ ๋– ์˜ฌ๋ฆฌ๋ฉด ์ข‹์•„์š”!

๊ทธ๋ฃน์ปจ์บฃ(GROUP_CONCAT)์œผ๋กœ ๋ฌธ์ž์—ด ํ•ฉ์น˜๊ธฐ [00:08:15]

โ€ข
GROUP_CONCATย ํ•จ์ˆ˜๋Š” ๊ทธ๋ฃน๋ณ„๋กœ ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ ๋ณด์—ฌ์ค˜์š”.
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด, ๋ถ€์„œ๋ณ„ ์‚ฌ์› ์ด๋ฆ„์„ ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ํ•œ ์ค„๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์–ด์š”:
SELECT department_id, GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ', ') AS employee_names FROM employees GROUP BY department_id;
SQL
๋ณต์‚ฌ
โ€ข
์ด ํ•จ์ˆ˜ ๋•๋ถ„์— ๋ถ€์„œ๋ณ„๋กœ ๋ˆ„๊ฐ€ ์žˆ๋Š”์ง€ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.
โ€ข
ORDER BY๋กœ ์ด๋ฆ„ ์ˆœ์„œ๋„ ์ •ํ•  ์ˆ˜ ์žˆ๊ณ ,ย SEPARATOR๋กœ ๊ตฌ๋ถ„์ž๋„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์–ด์š”.

๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ [00:10:35]

โ€ข
๊ทธ๋ฃนํ•จ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์„œ ๊ณ„์‚ฐํ•  ๋•Œ ๊ผญ ํ•„์š”ํ•œ ๋„๊ตฌ์˜ˆ์š”.
โ€ข
๊ธฐ๋ณธ ํ•จ์ˆ˜๋“ค(COUNT,ย MAX,ย MIN,ย SUM,ย AVG)์„ ์ž˜ ์ตํžˆ๊ณ ,ย GROUP BY๋กœ ๊ทธ๋ฃน ๊ธฐ์ค€์„ ์ •ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋‘์„ธ์š”.
โ€ข
๋ฌธ์ž์—ด์„ ํ•ฉ์น˜๋Š”ย GROUP_CONCAT๋„ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.
โ€ข
์‹ค์Šต์„ ํ†ตํ•ด ์ง์ ‘ ์จ๋ณด๋ฉด ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์š”!
์ด์ œ MySQL ๊ทธ๋ฃนํ•จ์ˆ˜, ์–ด๋ ต์ง€ ์•Š์ฃ ? ๋ฐ์ดํ„ฐ ๋ถ„์„์ด๋‚˜ ๋ณด๊ณ ์„œ ์ž‘์„ฑํ•  ๋•Œ ์•„์ฃผ ์œ ์šฉํ•˜๋‹ˆ ๊ผญ ์ตํ˜€๋‘์„ธ์š”! ๋‹ค์Œ ์˜์ƒ์—์„œ ๋˜ ๋งŒ๋‚˜์š”~