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