SUM() 是 MySQL 最常用的聚合函數,用於計算指定列的數值總和。本文通過 employee_tbl 範例數據,演示基本求和、GROUP BY 分組統計等核心用法,助你快速掌握數據聚合技巧。
| id | name | work_date | daily_typing_pages |
|---|---|---|---|
| 1 | John | 2007-01-24 | 250 |
| 2 | Ram | 2007-05-27 | 220 |
| 3 | Jack | 2007-05-06 | 170 |
| 3 | Jack | 2007-04-06 | 100 |
| 4 | Jill | 2007-04-06 | 220 |
| 5 | Zara | 2007-06-06 | 300 |
| 5 | Zara | 2007-02-06 | 350 |
SELECT SUM(daily_typing_pages) FROM employee_tbl;
結果:1610(所有員工打字頁數總和)。
注意:SUM() 自動忽略 NULL 值;若結果集為空,返回 NULL 而非 0。
SELECT name, SUM(daily_typing_pages)
FROM employee_tbl
GROUP BY name;
結果:
| name | SUM(daily_typing_pages) |
|---|---|
| Jack | 270 |
| Jill | 220 |
| John | 250 |
| Ram | 220 |
| Zara | 650 |
每位員工的總打字量一目瞭然。GROUP BY 將相同 name 的行聚合為一組,再對組內數值求和。
SELECT COALESCE(SUM(col), 0) ... 避免空結果集返回 NULL 導致應用層報錯。INT 範圍,建議列類型用 BIGINT 或轉換 CAST(col AS DECIMAL(20,2))。WHERE,分組後過濾聚合結果用 HAVING SUM(...) > 1000。(group_col, sum_col) 實現 Index Only Scan。SUM() 配合 GROUP BY 是業務報表、數據分析的基石。掌握其空值處理、類型溢出防範、索引優化要點,能讓聚合查詢既準確又高效。