๐ SQL ์ง๊ณ ํจ์ (Aggregate Functions)
SQL์ ๋ฐฐ์ฐ๋ค ๋ณด๋ฉด ๊ฐ์๋ ํฉ๊ณ๋ฅผ ๊ตฌํด์ผ ํ ๋๊ฐ ๊ผญ ์๊ธฐ๋๋ผ๊ณ ์.
์ง๊ณ ํจ์๋ง ์๋ฉด ์ด๋ฐ ๊ณ์ฐ์ ์ฟผ๋ฆฌ ํ ์ค๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค ๐
๐๏ธ ์์ ํ
์ด๋ธ โ students
| id | name | grade | score | teacher_id |
|---|---|---|---|---|
| 1 | ๊น์ฒ ์ | 1 | 85 | 1 |
| 2 | ์ด์ํฌ | 2 | NULL | 1 |
| 3 | ๋ฐ๋ฏผ์ค | 1 | 90 | 2 |
| 4 | ์ต์ง์ | 3 | 72 | NULL |
| 5 | ์ ์ํ | 2 | NULL | 2 |
| 6 | ํ์ง๋ฏผ | 1 | 78 | 1 |
| 7 | ์ค์์ค | 3 | 95 | 2 |
| 8 | ๊ฐ๋ค์ | 2 | 88 | 1 |
| 9 | ์ํ์ฐ | 3 | NULL | 2 |
| 10 | ์ค์ง์ | 1 | 65 | NULL |
CREATE DATABASE IF NOT EXISTS practice;
USE practice;
DROP TABLE IF EXISTS students;
CREATE TABLE students (
id INT,
name VARCHAR(10),
grade INT,
score INT,
teacher_id INT
);
INSERT INTO students VALUES (1, '๊น์ฒ ์', 1, 85, 1);
INSERT INTO students VALUES (2, '์ด์ํฌ', 2, NULL, 1);
INSERT INTO students VALUES (3, '๋ฐ๋ฏผ์ค', 1, 90, 2);
INSERT INTO students VALUES (4, '์ต์ง์', 3, 72, NULL);
INSERT INTO students VALUES (5, '์ ์ํ', 2, NULL, 2);
INSERT INTO students VALUES (6, 'ํ์ง๋ฏผ', 1, 78, 1);
INSERT INTO students VALUES (7, '์ค์์ค', 3, 95, 2);
INSERT INTO students VALUES (8, '๊ฐ๋ค์', 2, 88, 1);
INSERT INTO students VALUES (9, '์ํ์ฐ', 3, NULL, 2);
INSERT INTO students VALUES (10, '์ค์ง์', 1, 65, NULL);
โผ๏ธ ์ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์๋ ๋ฌธ๋ฒ ์ฌ์ฉ๋ฒ์ ์ค๋ช ํ ๊ฒ์!
๐งฎ ์ง๊ณํจ์
์ง๊ณ ํจ์๋ ์ฌ๋ฌ ํ์ ๊ฐ์ ๊ณ์ฐํด์ ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ํจ์์ ๋๋ค.
| ํจ์ | ์ค๋ช |
|---|---|
COUNT() |
ํ์ ๊ฐ์๋ฅผ ์ ๋๋ค |
SUM() |
ํฉ๊ณ๋ฅผ ๊ตฌํฉ๋๋ค |
AVG() |
ํ๊ท ์ ๊ตฌํฉ๋๋ค |
MAX() |
์ต๋๊ฐ์ ๊ตฌํฉ๋๋ค |
MIN() |
์ต์๊ฐ์ ๊ตฌํฉ๋๋ค |
COUNT(*)๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ง๊ณ ํจ์(SUM,AVG,MAX,MIN)๋
๋ชจ๋ NULL ๊ฐ์ ๋ฌด์ํ๊ณ ๊ณ์ฐํฉ๋๋ค.
๐ธ COUNT โ ๊ฐ์ ์ธ๊ธฐ
SELECT COUNT(*), COUNT(score) FROM students;
๐ฅ ๊ฒฐ๊ณผ
| COUNT(*) | COUNT(score) |
|---|---|
| 10 | 7 |
๐ก COUNT(*)์ COUNT(์ปฌ๋ผ๋ช )์ ์ฐจ์ด
COUNT(*)๋ NULL์ ํฌํจํ ๋ชจ๋ ํ์ ์
๋๋ค.
COUNT(score)๋ score๊ฐ NULL์ธ ์ด์ํฌ, ์ ์ํ, ์ํ์ฐ๋ฅผ ์ ์ธํ๊ณ ์
๋๋ค.
๐ธ SUM โ ํฉ๊ณ
SELECT SUM(score) FROM students;
๐ฅ ๊ฒฐ๊ณผ
| SUM(score) |
|---|
| 573 |
๐ธ AVG โ ํ๊ท
SELECT AVG(score) FROM students;
๐ฅ ๊ฒฐ๊ณผ
| AVG(score) |
|---|
| 81.8571 |
NULL์ ์ ์ธํ 7๋ช
(85, 90, 72, 78, 95, 88, 65)์ ํ๊ท ์ ๊ตฌํฉ๋๋ค.
10๋ช
์ด ์๋ 7๋ช
๊ธฐ์ค์ผ๋ก ๊ณ์ฐ๋๋ ์ ์ ์ฃผ์ํ์ธ์.
๐ธ MAX / MIN โ ์ต๋๊ฐ, ์ต์๊ฐ
SELECT MAX(score), MIN(score) FROM students;
๐ฅ ๊ฒฐ๊ณผ
| MAX(score) | MIN(score) |
|---|---|
| 95 | 65 |
โ AS์ ํจ๊ป ์ฐ๋ ์์
SELECT
COUNT(*) AS ์ ์ฒดํ์์,
COUNT(score) AS ์์ํ์์,
SUM(score) AS ์ด์ ,
AVG(score) AS ํ๊ท ์ ์,
MAX(score) AS ์ต๊ณ ์ ์,
MIN(score) AS ์ต์ ์ ์
FROM students;
๐ฅ ๊ฒฐ๊ณผ
| ์ ์ฒดํ์์ | ์์ํ์์ | ์ด์ | ํ๊ท ์ ์ | ์ต๊ณ ์ ์ | ์ต์ ์ ์ |
|---|---|---|---|---|---|
| 10 | 7 | 573 | 81.8571 | 95 | 65 |
AS๋ ์๋ตํด๋ ๋์ํฉ๋๋ค.
๋จ,AS๋ฅผ ์ฐ๋ ๊ฒ ๊ฐ๋ ์ฑ์ด ๋ ์ข์์ ๊ด๋ก์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
โ ๋ง๋ฌด๋ฆฌ
| ํจ์ | ์ค๋ช |
|---|---|
COUNT(*) |
ํ ๊ฐ์ (NULL ํฌํจ) |
COUNT(์ปฌ๋ผ๋ช
) |
ํ ๊ฐ์ (NULL ์ ์ธ) |
SUM() |
ํฉ๊ณ |
AVG() |
ํ๊ท |
MAX() / MIN() |
์ต๋๊ฐ / ์ต์๊ฐ |
๐ ์ฐธ๊ณ ์๋ฃ
'Database > SQL ๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| SQL ๊ธฐ์ด - BETWEEN, LIKE, IN (0) | 2026.03.21 |
|---|---|
| SQL ๊ธฐ์ด - WHERE (0) | 2026.03.20 |
| SQL ๊ธฐ์ด - GROUP BY - HAVING (0) | 2026.03.19 |
| SQL ๊ธฐ์ด - ORDER BY (0) | 2026.03.19 |
| SQL ๊ธฐ์ด - NULL ๋ค๋ฃจ๊ธฐ (0) | 2026.03.18 |