MySQL - 집계 함수

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘은 MySQL의 집계 함수에 대해 흥미로운 세계로 창수해볼 것입니다. 프로그래밍에 처음이라면 걱정 마세요 - 이 모험을 안내해드릴 친절한 안내자로서 저가 함께할 것입니다. 그럼 커피 한 잔을 들고, 시작해보세요!

MySQL - Aggregate Functions

집계 함수는 무엇인가요?

거대한 컬러풀한 레고 브릭 상자를 가정해보세요. 집계 함수는 마법의 도구처럼 당신의 컬렉션에서 빠르게 개수를 셀 수 있거나, 특별한 브릭을 찾을 수 있도록 도와줍니다. MySQL에서는 이러한 함수들이 값의 집합을 작동하여 단일 결과를 반환합니다.

일반적인 집계 함수

MySQL에서 가장 자주 사용되는 집계 함수를 살펴보겠습니다:

함수 설명
COUNT() 행의 수를 계산합니다
SUM() 값의 집합을 더합니다
AVG() 값의 집합의 평균을 계산합니다
MAX() 값의 집합에서 최대 값을 찾습니다
MIN() 값의 집합에서 최소 값을 찾습니다

집계 함수 시작하기

예제를 보기 전에 간단한 테이블을 만들어 작업해보겠습니다. 우리는 작은 온라인 서점을 운영하고 있다고 상상해봅시다:

CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
author VARCHAR(50),
price DECIMAL(6,2),
stock INT
);

INSERT INTO books (title, author, price, stock) VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', 12.99, 50),
('To Kill a Mockingbird', 'Harper Lee', 10.99, 75),
('1984', 'George Orwell', 9.99, 100),
('Pride and Prejudice', 'Jane Austen', 7.99, 60),
('The Catcher in the Rye', 'J.D. Salinger', 11.99, 40);

이제 우리의 서점 데이터가 준비되었으니, 각 집계 함수를 탐구해보겠습니다!

COUNT(): 쉽게 개수 세기

COUNT() 함수는 빠른 图书관리자처럼 당신의 책 개수를 쉽게 알려줄 수 있습니다.

SELECT COUNT(*) AS total_books FROM books;

이 쿼리는 다음과 같은 결과를 반환합니다:

+-------------+
| total_books |
+-------------+
|           5 |
+-------------+

여기서 COUNT(*)는 'books' 테이블의 모든 행을 계산합니다. 'AS total_books'를 사용하여 결과에 친절한 이름을 지정했습니다.

SUM(): 것들을 더하기

SUM()은 우리 서점의 현금 등록기처럼 빠르게 값을 더합니다.

SELECT SUM(stock) AS total_stock FROM books;

결과:

+-------------+
| total_stock |
+-------------+
|         325 |
+-------------+

이 쿼리는 'stock' 열의 모든 값을 더하여 우리의 창고에 있는 책의 총 수를 제공합니다.

AVG(): 중간 지점 찾기

AVG()는 "골디LOCKS존"을 찾는 것처럼 - 너무 높지도, 너무 낮지도 않고, 딱 맞는 지점을 찾습니다!

SELECT AVG(price) AS average_price FROM books;

결과:

+---------------+
| average_price |
+---------------+
|     10.790000 |
+---------------+

이 결과는 우리 서점의 책들의 평균 가격을 제공합니다. MySQL이 정확한 숫자를 반환하는 것을 보면, 뒤에서 복잡한 계산을 하고 있음을 알 수 있습니다!

MAX()과 MIN(): 극단을 찾기

MAX()과 MIN()은 우리 데이터의 슈퍼 헴러 - 항상 가장 큰 값과 가장 작은 값을 찾습니다.

SELECT
MAX(price) AS most_expensive,
MIN(price) AS least_expensive
FROM books;

결과:

+----------------+-----------------+
| most_expensive | least_expensive |
+----------------+-----------------+
|          12.99 |            7.99 |
+----------------+-----------------+

이 쿼리는 가장 높은 가격과 가장 낮은 가격을 한 번에 찾습니다. 효율적이죠?

집계 함수 결합하기

이제 이러한 함수들을 결합하면 진정한 마법이 일어납니다. 우리 서점에 대한 종합적인 개요를 얻어보겠습니다:

SELECT
COUNT(*) AS total_books,
SUM(stock) AS total_inventory,
AVG(price) AS average_price,
MAX(price) AS highest_price,
MIN(price) AS lowest_price
FROM books;

결과:

+-------------+------------------+---------------+---------------+--------------+
| total_books | total_inventory  | average_price | highest_price | lowest_price |
+-------------+------------------+---------------+---------------+--------------+
|           5 |              325 |     10.790000 |         12.99 |         7.99 |
+-------------+------------------+---------------+---------------+--------------+

와우! 단 한 번의 쿼리로 우리 서점의 창고와 가격에 대한 완전한 스냅샷을 얻었습니다.

GROUP BY와 집계 함수 사용하기

때로는 데이터를 그룹화한 후 집계 함수를 적용하고 싶습니다. 예를 들어, 각 작가가 우리 서점에 몇 권의 책을 가지고 있는지 알고 싶다면:

SELECT
author,
COUNT(*) AS book_count
FROM books
GROUP BY author;

결과:

+----------------------+------------+
| author               | book_count |
+----------------------+------------+
| F. Scott Fitzgerald  |          1 |
| Harper Lee           |          1 |
| George Orwell        |          1 |
| Jane Austen          |          1 |
| J.D. Salinger        |          1 |
+----------------------+------------+

이 쿼리는 책을 작가별로 그룹화하고 각 작가의 책 개수를 계산합니다. 책장을 작가별로 정리하는 것처럼입니다!

결론

이제 여러분은 MySQL의 집계 함수의 마법의 세계를 탐험했습니다. 이 강력한 도구들은 빠르게 데이터를 분석하고 요약하여 원시 데이터를 귀중한 통찰로 전환할 수 있게 해줍니다.

기억하시오, 실습이 완벽을 이루는 길입니다. 자신만의 테이블을 만들고 이 함수들을 실험해보세요. 얼마 지나지 않아 프로처럼 데이터베이스를 쿼리할 수 있을 것입니다!

행복한 코딩을 하시고, 여러분의 쿼리가 항상 원하는 결과를 반환하길 바랍니다!

Credits: Image by storyset