欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

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

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

過濾分組

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

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

分組與排序

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

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

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

舉個(gè)例子吧

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

在上面的示例中 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é)生姓名" 列進(jìn)行分組
  • 4、計(jì)算 max() 聚集函數(shù), 按 "總成績(jī)" 求出總成績(jī)中最大的一些數(shù)值
  • 5、執(zhí)行 HAVING 子句, 篩選課程的總成績(jī)大于 600 分的.
  • 6、執(zhí)行 ORDER BY 子句, 把最后的結(jié)果按 "Max 成績(jī)" 進(jìn)行排序.

注:如果使用了連接join和on,則會(huì)在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(*)時(shí)統(tǒng)計(jì)所有行,count(列)時(shí)忽略為null的行

總結(jié)

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

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

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

廣告

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

小程序開發(fā)