iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
0
Software Development

SQL 30天手把手入門系列 第 21

Day21 - 對資料分群內的資料下條件

  • 分享至 

  • xImage
  •  

資料經由 GROUP BY 分群後,如果要對分群後的資料來進行篩選,這時就可以使用 HAVING 來達成要求。同時,HAVING 一定要放在 GROUP BY 之後。

HAVING 句型

SELECT <Field 1><Field 2>......
FROM <TableName>
GROUP BY <Field 1><Field 2>......
HAVING <Rules>......;

執行順序

SELECT → FROM → WHERE → GROUP BY → HAVING

WHERE 和 HAVING 該用哪個

這兩者都可達到篩選資料的功能,得看你的需求來進行調整。

  • WHERE 是針對「單筆」記錄執行操作,而 HAVING 則是針對 GROUP BY 的分群條件執行操作。
  • 在執行的效能上,WHERE 可以先行挑出符合的記錄再執行操作,因此效能會比要先進行分群的 HAVING 好上許多。
  • 若能使用 WHERE 達成篩選資料的目的,那優先使用 WHERE 是對效能來說較佳的。因為 WHERE 預設會使用 Index 索引,可以讓搜尋速度提昇。

例子

  1. 若要搜尋符合:數量不超過 5 個的分類,就可以寫成如下:
SELECT category, COUNT(*) "Count"
FROM Product
GROUP BY category
HAVING COUNT = 5;

Day21Result1
2. 若要搜尋符合:平均成本價大於 2000 的分類,就可以寫成如下:

SELECT category, AVG(cost_price) "AVG"
FROM Product
GROUP BY category
HAVING AVG(cost_price)>2000;

Day21Result2


上一篇
Day 20 - 資料分群
下一篇
Day 22 - 資料結果排序
系列文
SQL 30天手把手入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言