MySQL - Агрегатные функции
Здравствуйте, будущие маги баз данных! Сегодня мы окунемся в захватывающий мир агрегатных функций MySQL. Не волнуйтесь, если вы новички в программировании – я буду вашим доброжелательным проводником в этом приключении, объясняя все шаг за шагом. Так что возьмите杯咖啡, и давайте начнем!
Что такое агрегатные функции?
Представьте, что у вас есть большая коробка с яркими 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