成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

分組查詢GROUPBY的使用與SQL執(zhí)行順序的講解

在SQL中使用GROUP BY來對SELECT的結(jié)果進行數(shù)據(jù)分組,在具體使用GROUP BY之前需要知道一些重要的規(guī)定。

坊子網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)

  • 1、GROUP BY子句可以包含任意數(shù)目的列。也就是說可以在組里再分組,為數(shù)據(jù)分組提供更細致的控制。
  • 2、如果在GROUP BY子句中指定多個分組,數(shù)據(jù)將在最后指定的分組上匯總。
  • 3、GROUP BY子句中列出的每個列都必須是檢索列或有效的表達式(但不能是聚集函數(shù))。如果在SELECT中使用了表達式,則必須在GROUP BY子句中指定相同的表達式。不能使用別名。
  • 4、出了聚集計算語句外,SELECT語句中的每一列都必須在GROUP BY子句中給出。
  • 5、如果分組列中有NULL值,則NULL將作為一個分組返回。如果有多行NULL值,它們將分為一組。
  • 6、GROUP BY子句必須在WHERE子句之后,ORDER BY之前。

過濾分組

對分組過于采用HAVING子句。HAVING子句支持所有WHERE的操作。HAVING與WHERE的區(qū)別在于WHERE是過濾行的,而HAVING是用來過濾分組。

另一種理解WHERE與HAVING的區(qū)別的方法是,WHERE在分組之前過濾,而HAVING在分組之后以每組為單位過濾。

分組與排序

一般在使用GROUP BY子句時,也應(yīng)該使用ORDER BY子句。這是保證數(shù)據(jù)正確排序的唯一方法。

SQL SELECT語句的執(zhí)行順序:

  • 1、from子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù);
  • 2、where子句基于指定的條件對記錄行進行篩選;
  • 3、group by子句將數(shù)據(jù)劃分為多個分組;
  • 4、使用聚集函數(shù)進行計算;
  • 5、使用having子句篩選分組;
  • 6、計算所有的表達式;
  • 7、使用order by對結(jié)果集進行排序;
  • 8、select 集合輸出。

舉個例子吧

select 考生姓名, max(總成績) as max總成績
from tb_Grade
where 考生姓名 is not null
group by 考生姓名
having max(總成績) > 600
order by max總成績

在上面的示例中 SQL 語句的執(zhí)行順序如下:

  • 1、首先執(zhí)行 FROM 子句, 從 tb_Grade 表組裝數(shù)據(jù)源的數(shù)據(jù)
  • 2、執(zhí)行 WHERE 子句, 篩選 tb_Grade 表中所有數(shù)據(jù)不為 NULL 的數(shù)據(jù)
  • 3、執(zhí)行 GROUP BY 子句, 把 tb_Grade 表按 "學(xué)生姓名" 列進行分組
  • 4、計算 max() 聚集函數(shù), 按 "總成績" 求出總成績中最大的一些數(shù)值
  • 5、執(zhí)行 HAVING 子句, 篩選課程的總成績大于 600 分的.
  • 6、執(zhí)行 ORDER BY 子句, 把最后的結(jié)果按 "Max 成績" 進行排序.

注:如果使用了連接join和on,則會在where執(zhí)行之前先執(zhí)行on,然后執(zhí)行join,接著才去執(zhí)行where。

分組查詢GROUP BY的使用與SQL執(zhí)行順序的講解

附:

MySQL中的聚集函數(shù):

  • 1、count()返回某列的行數(shù)
  • 2、avg()返回某列的平均值
  • 3、max()返回某列的最大值
  • 4、min()返回某列的最小值
  • 5、sum()返回某列的和
  • 6、distinct 去除重復(fù)值

注:avg()忽略值為null的行,count(*)時統(tǒng)計所有行,count(列)時忽略為null的行

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對創(chuàng)新互聯(lián)的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

網(wǎng)頁標題:分組查詢GROUPBY的使用與SQL執(zhí)行順序的講解
轉(zhuǎn)載源于:http://jinyejixie.com/article36/pdcdsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、服務(wù)器托管網(wǎng)站改版、網(wǎng)頁設(shè)計公司ChatGPT、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
静安区| 乌拉特前旗| 丹棱县| 汾阳市| 正宁县| 仪征市| 来安县| 商河县| 伊金霍洛旗| 永和县| 雅江县| 安义县| 嘉义县| 扬州市| 玉屏| 新泰市| 西青区| 黎平县| 天长市| 大新县| 买车| 阜宁县| 铜鼓县| 织金县| 鄂托克旗| 内江市| 和平县| 礼泉县| 布拖县| 建水县| 普定县| 漯河市| 松溪县| 陵川县| 桃园县| 祥云县| 周口市| 西乌珠穆沁旗| 石棉县| 台山市| 灵石县|