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

SQL GROUP BY 分組查詢核心原則與實例

     編輯:MySQL 資料庫相關知識

GROUP BY 與聚合函數(SUM、COUNT、MAX、MIN、AVG)配合,將明細數據按維度彙總。

核心原則

SELECT 列表中**未包裹聚合函數的列,必須出現在 GROUP BY 子句中**。

否則會產生「一對多」歧義:分組鍵相同而非聚合列取值不同,數據庫無法決定返回哪一行。

經典實例

-- Store_Information 表
store_name | Sales | Date
Los Angeles | 1500 | Jan-05-1999
San Diego   | 250  | Jan-07-1999
Los Angeles | 300  | Jan-08-1999
Boston      | 700  | Jan-08-1999

按店鋪統計總銷售額

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

結果:

Los Angeles | 1800
San Diego   | 250
Boston      | 700

常見錯誤與修正

錯誤寫法問題修正
SELECT A, B FROM t GROUP BY AB 未聚合且不在 GROUP BYSELECT A, COUNT(B) FROM t GROUP BY A 或 SELECT A, MAX(B) ...
SELECT A, B, SUM(C) FROM t GROUP BY AB 歧義GROUP BY A, B 或聚合 B

進階:多維分組與 HAVING

SELECT store_name, DATE_FORMAT(Date, '%Y-%m') AS month, SUM(Sales)
FROM Store_Information
GROUP BY store_name, month
HAVING SUM(Sales) > 1000;

掌握「非聚合列必入 GROUP BY」鐵律,即可避開 90% 分組查詢陷阱。

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