iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0

用來過濾數據的

-- 若過濾條件中使用了聚合函數,則必須使用having來替換where 否則會出錯
-- 使用到group by才能使用having, 且having一定要寫在group by的後面
select emp_id, name, branch_id, salary
from employee
where branch_id in (
select branch_id
from employee
group by branch_id
having avg(salary) < 50000
);
上面把同部門的平均薪資算出來小於五萬的輸出

where / having
where可以直接使用表中的字段作為篩選條件。但不能使用聚合函數作為篩選條件。Having必須要與group by配合使用,但他的條件可以是聚合函數或者一般的描述。
where是先篩選後連接 having則相反 這決定了where更高效 where能做到的不要使用having 否則效率會降低 也算是優化的一種(?)


上一篇
SQL function(2)
下一篇
小結一下
系列文
30 天學習資料庫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言