首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 統計查詢函數速查:AVG、SUM、MAX、MIN 與混合查詢陷阱

     編輯:MySQL 綜合教學

四大基礎聚合函數

函數用途語法範例
AVG平均值AVG(col)SELECT AVG(uid) FROM user; → 2.5
SUM總和SUM(col)SELECT SUM(uid) FROM user; → 10
MAX最大值MAX(col)SELECT MAX(uid) FROM user; → 4
MIN最小值MIN(col)SELECT MIN(uid) FROM user; → 1

注意:僅適用數值型欄位,字串型雖可執行但無意義;單次查詢只能針對單一欄位。

混合查詢:一次取多個統計值

SELECT 
  MAX(uid) AS max_uid,
  MIN(uid) AS min_uid,
  AVG(uid) AS avg_uid,
  SUM(uid) AS sum_uid
FROM user;

結果:

max_uid  min_uid  avg_uid  sum_uid
4        1        2.5000   10

常見陷阱:聚合函數與普通欄位混用

❌ 錯誤寫法

SELECT MAX(uid), username FROM user;

MySQL 允許執行(非 ONLY_FULL_GROUP_BY 模式),但 username 取值不確定(通常是第一行),業務含義錯誤。

✅ 正確寫法:子查詢或排序限制

SELECT 
  SUM(CASE WHEN sex=1 THEN 1 ELSE 0 END) AS male_cnt,
  SUM(CASE WHEN sex=2 THEN 1 ELSE 0 END) AS female_cnt
FROM user;

效能提示

  • 聚合查詢若無 WHERE 條件,會全表掃描,大表建議建立覆蓋索引
  • COUNT(*) 在 MyISAM 為 O(1),InnoDB 需掃描;COUNT(col) 忽略 NULL
  • 避免在大表上頻繁執行無索引聚合,考慮物化視圖或定時統計表
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved