MySQL - 집계 함수
안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘은 MySQL의 집계 함수에 대해 흥미로운 세계로 창수해볼 것입니다. 프로그래밍에 처음이라면 걱정 마세요 - 이 모험을 안내해드릴 친절한 안내자로서 저가 함께할 것입니다. 그럼 커피 한 잔을 들고, 시작해보세요!
집계 함수는 무엇인가요?
거대한 컬러풀한 레고 브릭 상자를 가정해보세요. 집계 함수는 마법의 도구처럼 당신의 컬렉션에서 빠르게 개수를 셀 수 있거나, 특별한 브릭을 찾을 수 있도록 도와줍니다. 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