含有GROUP BY子句的查詢中該怎么顯示,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),大通網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:大通等地區(qū)。大通做網(wǎng)站價(jià)格咨詢:18982081108
在SQLServer數(shù)據(jù)庫(kù)查詢中,為了對(duì)查詢結(jié)果進(jìn)行對(duì)比、分析,我們經(jīng)常會(huì)用到GROUPBY子句以及COUNT()函數(shù)來(lái)對(duì)查詢結(jié)果進(jìn)行分類、統(tǒng)計(jì)等。但是我們?cè)谑褂玫倪^(guò)程中往往會(huì)存在一些問(wèn)題。下面創(chuàng)新互聯(lián)小編來(lái)講解下含有GROUPBY子句的查詢中如何顯示?
含有GROUPBY子句的查詢中如何顯示
1.問(wèn)題:
如下ExampleTable表,求各種類(CategoryID)滿足Flag等于1的記錄數(shù)。
IDFlagCategoryID
111
211
312
412
503
理想的結(jié)果應(yīng)該如下:
CategoryIDTotalNum
12
22
30
初看此問(wèn)題,我們很容易寫出如下語(yǔ)句:
SELECTCategoryID,COUNT(1)ASTotalNumFROMExampleTableWHEREflag=1GROUPBYCategoryID
可運(yùn)行之后得到的結(jié)果如下:
CategoryIDTotalNum
12
22
沒有CategoryID=3,TotalNum=0的記錄。
含有GROUPBY子句的查詢中如何顯示
2.原因分析:
造成以上結(jié)果的原因是因?yàn)樵赟ELECT語(yǔ)句中WHERE子句先于GROUPBY執(zhí)行,因此在執(zhí)行GROUPBY子句時(shí),表中的記錄已經(jīng)將Category=3的記錄過(guò)濾,分組處理中自然不會(huì)計(jì)算在內(nèi)。
SQLSELECT語(yǔ)句完整的執(zhí)行順序:
1、FROM子句組裝來(lái)自不同數(shù)據(jù)源的數(shù)據(jù);
2、WHERE子句基于指定的條件對(duì)記錄進(jìn)行篩選;
3、GROUPBY子句將數(shù)據(jù)劃分為多個(gè)分組;
4、使用聚集函數(shù)進(jìn)行計(jì)算;
5、使用HAVING子句篩選分組;
6、計(jì)算所有表達(dá)式;
7、使用ORDERBY對(duì)結(jié)果進(jìn)行排序。
3.解決方案:
構(gòu)造含有所有CategoeyID的結(jié)果集與其上語(yǔ)句所得結(jié)果集進(jìn)行連接,并利用NULL替換函數(shù)(如SQLSERVER中的ISNULL()、ORACLE中的NVL())將NULL替換為0。
示例語(yǔ)句如下:SELECTDISTINCTMainTable.CategoryID,ISNULL(SubTable.SubNum,0)ASTotalNumFROMExampleTableASMainTableLEFTJOIN(SELECTCategoryID,COUNT(1)ASSubNumFROMExampleTableWHEREflag=1GROUPBYCategoryID)ASSubTableONMainTable.CategoryID=SubTable.CategoryID
執(zhí)行后即可返回正確的結(jié)果:
CategoryIDTotalNum
12
22
30
關(guān)于含有GROUP BY子句的查詢中該怎么顯示問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
本文題目:含有GROUPBY子句的查詢中該怎么顯示
當(dāng)前路徑:http://aaarwkj.com/article12/pesidc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、云服務(wù)器、網(wǎng)站內(nèi)鏈、網(wǎng)站導(dǎo)航、營(yíng)銷型網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)