HAVING 與 GROUP BY 搭配使用,用於分組後篩選彙總結果。不同於 WHERE(分組前篩選列),HAVING 作用於彙總函數結果。
SELECT column1, column2, ..., aggregate_function(expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ...
HAVING condition1 ... condition_n;
SUM、COUNT、MIN、MAX、AVG查詢各部門總銷售額超過 100 萬的部門:
SELECT department, SUM(sales) AS total_sales
FROM order_details
GROUP BY department
HAVING SUM(sales) > 1000000;
| 特性 | WHERE | HAVING |
|---|---|---|
| 執行時機 | 分組前 | 分組後 |
| 可用彙總函數 | 否 | 是 |
| 作用對象 | 單列資料 | 群組彙總結果 |
WHERE 過濾基礎資料,減少分組運算量HAVING 條件中必須包含彙總函數或 GROUP BY 欄位HAVING COUNT(*) > 10 AND AVG(score) >= 80