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
('了不起的盖茨比', 'F. 斯科特·菲茨杰拉德', 12.99, 50),
('杀死一只知更鸟', '哈珀·李', 10.99, 75),
('1984', '乔治·奥威尔', 9.99, 100),
('傲慢与偏见', '简·奥斯汀', 7.99, 60),
('麦田里的守望者', 'J.D. 塞林格', 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()就像找到“金发姑娘区域”——不高不低,刚刚好!

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