MySQL中聚合函數匯總 聚合函數在統計查詢中的實際案例

要統計記錄數量用count()函數,計算總和與平均值用sum()和avg(),查找極值用max()和min(),結合group by實現分組統計。1. count(*)統計所有行,count(字段名)僅統計非NULL值;2. sum(字段)求總和,avg(字段)求平均值,僅適用于數值型;3. max()和min()可獲取最大值與最小值,支持數值、日期、字符串類型;4. 使用group by按字段分組后聚合,結合having篩選分組結果,實現復雜統計分析。

MySQL中聚合函數匯總 聚合函數在統計查詢中的實際案例

mysql 查詢中,聚合函數是非常實用的一類函數,尤其在做統計、匯總時幾乎離不開它們。常見的比如 SUM、AVG、COUNT、MAX、MIN 等,都是處理數據時最常用到的工具

下面結合幾個實際場景,看看這些函數是怎么用的。


如何統計表中的記錄數量?

COUNT() 是最常用來統計行數的函數。它有幾個使用方式:

  • COUNT(*):統計所有行數,包括 NULL。
  • COUNT(字段名):只統計該字段不為 NULL 的行數。

示例:

假設有一個用戶表 users,想查看總共有多少注冊用戶:

SELECT COUNT(*) AS total_users FROM users;

如果只想統計有手機號的用戶數量:

SELECT COUNT(phone) AS has_phone_users FROM users;

這種方式在分析數據完整性或缺失率時非常有用。


如何計算某列的總和與平均值?

當你需要對某個數值型字段進行求和或求平均時,SUM() 和 AVG() 就派上用場了。

實際案例:

假設有一個訂單表 orders,里面有訂單金額 amount 字段。要統計所有訂單總金額和平均訂單金額:

SELECT    SUM(amount) AS total_amount,    AVG(amount) AS avg_amount  FROM orders;

這在財務報表、銷售分析中是常見需求。

注意:這兩個函數都只對數值型字段有效,不能用于字符串或日期類型。


如何找出最大值和最小值?

MAX() 和 MIN() 可以快速獲取某一列的最大值和最小值,適用于數值、日期、字符串等多種類型。

舉例說明:

還是以 orders 表為例,想知道最高和最低訂單金額:

SELECT    MAX(amount) AS max_order,    MIN(amount) AS min_order  FROM orders;

也可以用在時間字段上,比如找出最早和最近的下單時間:

SELECT    MIN(order_date) AS first_order,    MAX(order_date) AS latest_order  FROM orders;

這對了解業務的時間跨度很有幫助。


聚合函數 + 分組查詢的實際應用

真正的統計分析往往不是全局匯總,而是按類別分組后再聚合。這就需要用到 GROUP BY。

場景舉例:

有一個銷售記錄表 sales,包含 product_id(產品ID)和 sale_amount(銷售額)。我們想看每個產品的總銷售額:

SELECT    product_id,    SUM(sale_amount) AS total_sales  FROM sales  GROUP BY product_id;

還可以加上篩選條件,例如只看總銷售額超過1000的產品:

SELECT    product_id,    SUM(sale_amount) AS total_sales  FROM sales  GROUP BY product_id  HAVING total_sales > 1000;

這里注意:

  • WHERE 是在分組前過濾數據;
  • HAVING 是在分組后篩選結果。

這是很多人容易混淆的地方。


基本上就這些。聚合函數雖然看起來簡單,但在實際查詢中靈活搭配 GROUP BY、HAVING、JOIN 等語句,可以完成非常復雜的統計任務。用得多了你會發現,很多數據分析其實就是在“怎么分組+怎么匯總”之間做文章。

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享