中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL初學者如何使用分組聚合查詢

發布時間:2021-10-26 16:13:56 來源:億速云 閱讀:198 作者:iii 欄目:開發技術

本篇內容介紹了“MySQL初學者如何使用分組聚合查詢”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

目錄
  • 1.分組查詢的原理圖

  • 2.group by關鍵字語法詳解

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

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

    • 1)原始表和結果集的概念

    • 2)黃同學支大招

    • 3)案例講解

  • 5.分組查詢(按函數分組)

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

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

        • 8.分組查詢的總結

          1.分組查詢的原理圖

          MySQL初學者如何使用分組聚合查詢

          對上述原始數據,按照DEPARTMENT_ID(員工id)分組統計SALARY(薪水)的平均值。

          MySQL初學者如何使用分組聚合查詢

          上述原理寫成代碼,應該怎么寫呢?

          select 
          	department_id,avg(salary)
          from 
          	test
          group by 
          	department_id;

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

          當自動分配完成后,會根據你所寫的分組函數,進行組內運算。

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

          2.group by關鍵字語法詳解

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

          MySQL初學者如何使用分組聚合查詢

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

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

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

          答案肯定是可以的!但是該字段有一定的限制,并不是什么字段都可以。也就是說,當SQL語句中使用了group by關鍵字后,select后面除了聚合函數,就只能是group by后面出現的字段。也就是圖中的字段A,select后面只能存在group by后面的字段。

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

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

          select 
              deptno,avg(sal) avgs
          from 
              emp
          group by 
              deptno

          結果如下:

          MySQL初學者如何使用分組聚合查詢

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

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

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

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

          2)黃同學支大招

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

          MySQL初學者如何使用分組聚合查詢 

          3)案例講解

          原始數據集如下:

          MySQL初學者如何使用分組聚合查詢

          ① 分組前篩選

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

          MySQL初學者如何使用分組聚合查詢

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

          MySQL初學者如何使用分組聚合查詢

          ② 分組后篩選

          習題一:查詢部門員工個數大于3的部門編號和員工個數。

          MySQL初學者如何使用分組聚合查詢

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

          MySQL初學者如何使用分組聚合查詢

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

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

          MySQL初學者如何使用分組聚合查詢

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

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

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

          結果如下:

          MySQL初學者如何使用分組聚合查詢

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

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

          MySQL初學者如何使用分組聚合查詢

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

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

          MySQL初學者如何使用分組聚合查詢

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

          MySQL初學者如何使用分組聚合查詢

          8.分組查詢的總結

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

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

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

          “MySQL初學者如何使用分組聚合查詢”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

          向AI問一下細節

          免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

          AI

          大连市| 雷山县| 虹口区| 铁岭市| 广平县| 金平| 旺苍县| 星子县| 杨浦区| 海林市| 彝良县| 连云港市| 惠水县| 永年县| 上林县| 兰州市| 临高县| 读书| 衡阳县| 达州市| 固原市| 壶关县| 苍山县| 贵德县| 德江县| 宜阳县| 滁州市| 东乌珠穆沁旗| 呼和浩特市| 临江市| 琼结县| 垫江县| 法库县| 陇川县| 丰镇市| 崇州市| 仪征市| 甘洛县| 新丰县| 丰台区| 鄢陵县|