首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL GROUP BY 子句完整教學:從語法到實戰範例

     編輯:MySQL 資料庫相關知識

核心概念

GROUP BY 用於將查詢結果依指定欄位分組,配合聚合函數(SUM、COUNT、AVG、MAX、MIN 等)進行統計分析。關鍵規則:SELECT 清單中未包裹在聚合函數內的欄位,必須 出現在 GROUP BY 子句中。

基本語法

SELECT column1, AGG_FUNC(column2)
FROM table_name
GROUP BY column1;

實戰範例:各店鋪營業額統計

資料準備

store_nameSalesDate
Los Angeles$1500Jan-05-1999
San Diego$250Jan-07-1999
Los Angeles$300Jan-08-1999
Boston$700Jan-08-1999

查詢語句

SELECT store_name, SUM(Sales) AS total_sales
FROM Store_Information
GROUP BY store_name;

執行結果

store_nametotal_sales
Los Angeles$1800
San Diego$250
Boston$700

進階用法

多欄位分組

SELECT department, job_title, COUNT(*) AS emp_count, AVG(salary) AS avg_sal
FROM employees
GROUP BY department, job_title;

先依部門分組,再依職位細分。

搭配 HAVING 過濾分組

SELECT store_name, SUM(Sales) AS total_sales
FROM Store_Information
GROUP BY store_name
HAVING total_sales > 1000;

僅保留營業額超過 1000 的店鋪(WHERE 無法過濾聚合結果)。

與 ORDER BY 結合

SELECT store_name, SUM(Sales) AS total_sales
FROM Store_Information
GROUP BY store_name
ORDER BY total_sales DESC;

常見錯誤避坑

  • ONLY_FULL_GROUP_BY 模式:MySQL 5.7+ 預設開啟,SELECT 非聚合且非 GROUP BY 欄位會報錯。解決:補全 GROUP BY 或使用 ANY_VALUE()。
  • NULL 值分組:NULL 會被視為單一群組統計。
  • 效能考量:大數據量分組前建議先用 WHERE 過濾,減少掃描行數。

熟練掌握 GROUP BY,是資料分析與報表開發的基石技能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved