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