MySQL - Агрегатные функции

Здравствуйте, будущие маги баз данных! Сегодня мы окунемся в захватывающий мир агрегатных функций MySQL. Не волнуйтесь, если вы новички в программировании – я буду вашим доброжелательным проводником в этом приключении, объясняя все шаг за шагом. Так что возьмите杯咖啡, и давайте начнем!

MySQL - Aggregate Functions

Что такое агрегатные функции?

Представьте, что у вас есть большая коробка с яркими LEGO кирпичами. Агрегатные функции resemble магические инструменты, которые помогают вам быстро сосчитать, отсортировать или найти особые кирпичи в вашей коллекции, не приходится просматривать каждый кирпич по одному. В 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);

Теперь у нас есть данные нашего книжного магазина, давайте explored каждую агрегатную функцию!

COUNT(): Учет Simplified

Функция COUNT() resembles быстрый библиотекарь, который может сказать вам, сколько у вас книг, не потея.

SELECT COUNT(*) AS total_books FROM books;

Этот запрос вернет:

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

Здесь COUNT(*) подсчитывает все строки в нашей таблице 'books'. Мы использовали 'AS total_books', чтобы дать нашему результату友好ное имя.

SUM(): Суммирование значений

SUM() resembles кассовый аппарат для нашего книжного магазина, быстро суммирующий значения для нас.

SELECT SUM(stock) AS total_stock FROM books;

Результат:

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

Этот запрос суммирует все значения в столбце 'stock', давая нам общее количество книг в нашем запасе.

AVG(): Поиск среднего значения

AVG() resembles находка "золотой середины" – не слишком высоко, не слишком низко, а как раз то, что нужно!

SELECT AVG(price) AS average_price FROM books;

Результат:

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

Этот результат gives нам среднюю цену книг в нашем магазине. Обратите внимание, как MySQL возвращает точное число – за кулисами идет серьезная математика!

MAX() и MIN(): Нахождение пределов

MAX() и MIN() resemble супергерои наших данных – всегда находят наибольшие и наименьшие значения.

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

Результат:

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

Этот запрос находит как самое высокое, так и самое низкое значение цены за один раз. Эффективно, правда?

Combining Aggregate Functions

Настоящая магия начинается, когда мы начинаем combine эти функции. Давайте получим полное представление о нашем книжном магазине:

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 |
+----------------------+------------+

Этот запрос groups книги по автору и затем подсчитывает, сколько книг у каждого автора. Это resemble организацию вашей книжной полки по авторам!

Заключение

И вот оно,朋友们! Мы exploredondrous мир агрегатных функций MySQL. Эти мощные инструменты позволяют вам быстро анализировать и резюмировать ваши данные, превращая сырые числа в ценные инсайты.

Помните, практика makes perfect. Попробуйте создавать свои собственные таблицы и experimenting с этими функциями. Before you know it, вы будете запрашивать базы данных как профессионал!

Счастливого кодирования, и пусть ваши запросы всегда возвращают результаты, которые вы ищете!

Credits: Image by storyset