| 函數 | 說明 |
| AVG | 平均值(忽略 NULL) |
| MAX | 最大值 |
| BINARY_CHECKSUM | 二進位雜湊總和 |
| MIN | 最小值 |
| CHECKSUM | 資料列雜湊值 |
| SUM | 加總(忽略 NULL) |
| CHECKSUM_AGG | 群組雜湊總和 |
| STDEV | 樣本標準差 |
| COUNT | 行數統計(含 NULL) |
| STDEVP | 母體標準差 |
| COUNT_BIG | 大數值行數統計 (BIGINT) |
| VAR | 樣本變異數 |
| GROUPING | GROUP BY 分組識別 |
| VARP | 母體變異數 |
核心特性
- 確定性:相同輸入必得相同輸出,可用於索引檢視表、計算欄位
- 忽略 NULL:除
COUNT(*) / COUNT_BIG(*) 外,所有聚合函數自動忽略 NULL 值
- 常搭配 GROUP BY:分組統計
允許使用位置
SELECT 選取清單(含子查詢、外部查詢)
COMPUTE / COMPUTE BY 子句
HAVING 子句
不允許:WHERE、GROUP BY、ORDER BY (除非搭配子查詢)、JOIN ON 條件中直接使用。
常見用法範例
-- 基本統計
SELECT dept_id, COUNT(*) AS emp_cnt, AVG(salary) AS avg_sal, MAX(salary) AS max_sal
FROM employees
GROUP BY dept_id
HAVING COUNT(*) > 5
-- CHECKSUM_AGG 偵測資料變更
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM table_a
-- 比對兩時間點結果,若不同表示資料有變動
-- GROUPING 識別彙總列 (ROLLUP/CUBE)
SELECT dept_id, job_id, COUNT(*), GROUPING(dept_id), GROUPING(job_id)
FROM employees
GROUP BY ROLLUP (dept_id, job_id)
效能提示
- 聚合前先篩選 (
WHERE),減少參與運算行數
- 適當索引支援
GROUP BY 欄位
- 大量資料考慮分階段聚合或資料倉庫預聚合
COUNT(*) 比 COUNT(col) 快 (不需檢查 NULL)
- 上一篇文章: SQL Server 7.0 中 SET LOCK_TIMEOUT 非持久化特性與死鎖預防正確策略
- 下一篇文章: DTS 匯入匯出遺失預設值等物件:正確勾選「複製物件與資料」與分批次匯入順序
Copyright ©
程式碼之家 All Rights Reserved