Database/SQL ๊ธฐ์ดˆ

SQL ๊ธฐ์ดˆ - ์ง‘๊ณ„ ํ•จ์ˆ˜(COUNT, AVG, SUM, MAX, MIN)

UNarD 2026. 3. 20. 16:10

๐Ÿ“Š 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