一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Mysql - MySQL初學(xué)者可以告別分組聚合查詢的困擾了

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

2021-11-26 16:56數(shù)據(jù)分析與統(tǒng)計學(xué)之美 Mysql

這篇文章主要為大家介紹了MySQL分組聚合查詢的難點講解,幫助MySQL初學(xué)著告別分組聚合查詢的困擾,有需要的朋友可以借鑒參考下,希望能夠有所進步

1.分組查詢的原理圖

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

對上述原始數(shù)據(jù),按照department_id(員工id)分組統(tǒng)計salary(薪水)的平均值。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

上述原理寫成代碼,應(yīng)該怎么寫呢?

?
1
2
3
4
5
6
select
    department_id,avg(salary)
from
    test
group by
    department_id;

可以清楚地看到,使用department_id進行分組后,系統(tǒng)默認將department_id相同的號所在的行,分配在一起,你有幾個不同的department_id,就會分為幾組,每個組中的數(shù)據(jù)行數(shù),不一定都要相同。

當(dāng)自動分配完成后,會根據(jù)你所寫的分組函數(shù),進行組內(nèi)運算。

也就是說,你使用的是sum()函數(shù),就會組內(nèi)求和;當(dāng)你使用的是avg()函數(shù),就會組內(nèi)求平均值;當(dāng)你使用的是count()函數(shù),就會進行組內(nèi)計數(shù);當(dāng)你使用的是max()函數(shù),就會進行組內(nèi)求最大值;你使用的是min()函數(shù),就會進行組內(nèi)求最小值。

2.group by關(guān)鍵字語法詳解

有些小白在學(xué)習(xí)mysql的過程中,很多都是在group by關(guān)鍵字這個地方卡殼。于是我希望自己能夠用白話圖文的方式,讓你真正搞明白這個關(guān)鍵字的含義。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

group by是用于分組查詢的關(guān)鍵字,一般是配合sum(),avg(),count(),max(),min()聚合函數(shù)使用的。也就是說sql語句中只要有group by,那么在select后面的展示字段中一般會有聚合函數(shù)(5個聚合函數(shù))中的一個或多個函數(shù)出現(xiàn)。觀察上圖,有一點你需要記住,你用表中的字段a進行分組后,一般就需要對表中的其它字段,使用聚合函數(shù),這樣意義更大,而不是還對字段a使用聚合函數(shù),沒啥太大意義。

我們再思考下面這個問題!

當(dāng)sql語句中使用了group by后,在select后面一定有一個字段使用了聚合函數(shù)(5個聚合函數(shù))。但是除了這個聚合函數(shù),select后面還可以添加其他什么字段嗎?

答案肯定是可以的!但是該字段有一定的限制,并不是什么字段都可以。也就是說,當(dāng)sql語句中使用了group by關(guān)鍵字后,select后面除了聚合函數(shù),就只能是group by后面出現(xiàn)的字段。也就是圖中的字段a,select后面只能存在group by后面的字段。

3.一個簡單的分組查詢的案例

案例 :按照部門編號deptno分組,統(tǒng)計每個部門的平均工資。

?
1
2
3
4
5
6
select
    deptno,avg(sal) avgs
from
    emp
group by
    deptno

結(jié)果如下:

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

4.分組前篩選和分組后篩選

這個知識點就是要帶著大家理解一下,什么使用該用where篩選?什么時候該用having篩選?這個知識點對于學(xué)習(xí)mysql的小白來說,也是一個棘手的事兒。不用擔(dān)心,跟著黃同學(xué)學(xué)mysql,沒有學(xué)不會的。

1)原始表和結(jié)果集的概念

原始表指的是數(shù)據(jù)庫中真正存在的那個表,使用【select * from 表名】查詢出來的就是原始表信息。結(jié)果集指的是在sql語句中,添加其它任何一個限制條件,最終展示給我們表,都是結(jié)果集。添加不同的限制條件,查詢出來的結(jié)果集也是不同的。原始表只有一個,結(jié)果集卻是各種各樣的。

2)黃同學(xué)支大招

只要是需求中,涉及到聚合函數(shù)做條件的情況,一定是分組后的篩選。能用分組前篩選的,就優(yōu)先考慮分組前的篩選。(考慮到性能問題)

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

3)案例講解

原始數(shù)據(jù)集如下:

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

① 分組前篩選

習(xí)題一:查詢姓名中包含s字符的,每個部門的工資之和。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

習(xí)題二:查詢工資大于2000的,不同部門的平均工資。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

② 分組后篩選

習(xí)題一:查詢部門員工個數(shù)大于3的部門編號和員工個數(shù)。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

習(xí)題二:查詢每個部門最高工資大于3000的部門編號和最高工資。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

③ 分組前篩選和分組后篩選合用

習(xí)題:查詢1981年入職的,不同部門間工資的平均值大于2000的部門編號和平均值。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

5.分組查詢(按函數(shù)分組)

習(xí)題:按員工姓名的長度分組,查詢每一組的員工個數(shù),篩選員工個數(shù)>3的有哪些?

?
1
2
3
4
select length(ename) len,count(*) counts
from emp
group by len
having counts > 3;

結(jié)果如下:

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

6.分組查詢(按多個字段分組)

習(xí)題:查詢每個部門每個工種的員工的平均工資。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

7.group by和order by,一對老搭檔

習(xí)題一:查詢每個部門的員工的平均工資,按照平均工資降序。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

習(xí)題二:查詢每個部門的員工的平均工資,按照平均工資升序。

MySQL初學(xué)者可以告別分組聚合查詢的困擾了

8.分組查詢的總結(jié)

1)分組函數(shù)做條件,肯定是放在having子句中。

2)能用分組前篩選的,就優(yōu)先考慮使用分組前篩選。(where篩選)

3)group by子句支持單個字段分組,多個字段分組(多個字段之間用逗號隔開沒有順序要求),還支持函數(shù)分組(用的較少)。

以上就是mysql初學(xué)者可以告別分組聚合查詢的困擾了的詳細內(nèi)容,更多關(guān)于mysql分組聚合查詢的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://huang-tong-xue.blog.csdn.net/article/details/106843743

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品福利一区 | 啊啊啊好大好爽视频 | 欧美一卡二卡科技有限公司 | 欧美日韩国产一区二区三区不卡 | 青青成人福利国产在线视频 | 村上里沙40分钟在线观看 | 草莓秋葵菠萝蜜绿巨人污 | 国产成人在线小视频 | 秀逼逼| 亚洲福利 影院 | 午夜理论电影在线观看亚洲 | 国产免费午夜高清 | 无人区在线观看免费完整版免费 | 亲爱的客栈第二季免费观看完整版 | 18videossex性欧美69| 国产自拍影院 | 欧美在线高清 | 久操久操久操 | 四虎免费在线视频 | 动漫美女强行被吸乳做羞羞事 | 久久九九久精品国产尤物 | 亚州精品视频 | 亚洲欧美日韩另类在线一 | 欧美日韩视频在线第一区二区三区 | 久久热r在线视频精品 | 日本一道一区二区免费看 | 高h扶她文肉 | 干操网 | 欧美午夜视频一区二区三区 | 羞羞视频免费观看网站 | 亚洲福利一区二区三区 | 久久亚洲成a人片 | 狠狠插综合网 | 公交车强校花系列小说 | 欧美另类bbbxxxxx另类 | 精品国产免费观看一区高清 | 香蕉视频久久 | 黑人与老女人做受 | 国产成人精品999在线 | 日本深夜视频 | 欧美人在线一区二区三区 |