HAVING 子句是用來取代 WHERE 搭配聚合函數 (aggregate function) 進行條件查詢,因為 WHERE 不能與聚合函數一起使用。
聚合函數指的也就是 AVG()、COUNT()、MAX()、MIN()、SUM() 等這些內建函數。
SELECT column_name(s), aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name1, column_name2...
HAVING aggregate_function(column_name) operator value;
假設我們想從下面的 ORDER 資料表中查詢訂單金額總合大於 100 的顧客:
訂單資料表(ORDER)
訂單編號(Primary Key) | 顧客編號 | 商品名稱 | 價格 | 日期 |
---|---|---|---|---|
01 | 01 | 漢堡 | 70 | 2021-01-03 |
02 | 02 | 薯條 | 50 | 2021-05-15 |
03 | 04 | 可樂 | 40 | 2021-11-01 |
04 | 04 | 拉麵 | 230 | 2021-12-12 |
05 | 04 | 雞塊 | 50 | 2021-12-12 |
06 | 06 | 饅頭 | 20 | 2021-12-31 |
我們可以下這個 SELECT 查詢敘述句:
SELECT 顧客編號, SUM(價格) FROM ORDER
GROUP BY 顧客編號
HAVING SUM(價格) >100;
返回的結果如下:
顧客編號 | SUM(價格) |
---|---|
04 | 230 |
下篇見