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
('了不起的盖茨比', '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