99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2022-05-25 閱讀量: 839
where子句條件里為什么不能有聚合函數(shù)?

首先我們應(yīng)該熟悉什么是聚合函數(shù)(又名聚集函數(shù))

例如MIN(),Max(),SUM(),COUNT(),AVG() 這類的,我們稱作是聚合函數(shù)。

那么我們不能在where子句中使用這些函數(shù),為什么呢?

聚合函數(shù)也叫列函數(shù),它們都是基于整列數(shù)據(jù)進(jìn)行計(jì)算的,而where子句則是對(duì)數(shù)據(jù)行進(jìn)行過濾的(這里過濾是在一個(gè)記錄里邊過濾的,基于"行"),更簡(jiǎn)單地說,因?yàn)榫奂瘮?shù)要對(duì)全列數(shù)據(jù)時(shí)行計(jì)算,因而使用它的前提是:結(jié)果集已經(jīng)確定!

而where子句還處于“確定”結(jié)果集的過程中,因而不能使用聚集函數(shù)。

與where子句不能出現(xiàn)聚集函數(shù)正相反的是,我們幾乎看不到不使用聚集函數(shù)的having子句。為什么?因?yàn)樵谒椒较蛏细鶕?jù)外部指定條件的篩選(也就是對(duì)行的篩選),where子句可以獨(dú)立完成,剩下的往往都是需要根據(jù)結(jié)果集自身的統(tǒng)計(jì)數(shù)據(jù)進(jìn)一步篩選了,這時(shí),幾乎都需要通過having子句配合聚集函數(shù)來完成。

按照下面這個(gè)就是錯(cuò)誤的,會(huì)報(bào)一個(gè)錯(cuò)誤:Group function is not allowed here

部門員工表

dept_id部門ID department 部門名 name員工名 salaty 工資 city 分公司所在城市 startyear入職年份

找出北京分公司中部門內(nèi)平均工資大于1萬的部門員工的平均工資, 列出部門ID, 部門名和部門平均工資

select dept_id,department,avg(salary)
from employees 
where city="北京"
group by department
having avg(salary)>10000
order by dept_id


原因。

sql語句的執(zhí)行順序?yàn)?/p>

from子句 : from 那個(gè)表(數(shù)據(jù)庫已有的表或者是子查詢的虛擬表)

where 子句: where對(duì)表的行數(shù)據(jù)做篩選, 比如 where city="北京", 會(huì)篩選出城市名等于北京的行

group by 子句 group by 對(duì)行篩選的數(shù)據(jù)做分組 ,比如group by department,會(huì)按照部門分組

having 子句 having 在前面基礎(chǔ)上對(duì)數(shù)據(jù)的列做計(jì)算 having avg(salary)>10000, 把group by分組后的部門里 部門平均工資大于1萬的部門保留下來,

order by 子句 order by 在以上處理后的結(jié)果集基礎(chǔ)上排序, order by dept_id, 在以上處理后的結(jié)果集基礎(chǔ)上按照部門ID排序


261.8193
0
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無數(shù)據(jù)
推薦帖子