日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
含有GROUPBY子句的查詢中如何顯示COUNT()為0的結(jié)果

SQL Server數(shù)據(jù)庫查詢中,為了對(duì)查詢結(jié)果進(jìn)行對(duì)比、分析,我們經(jīng)常會(huì)用到GROUP BY子句以及COUNT()函數(shù)來對(duì)查詢結(jié)果進(jìn)行分類、統(tǒng)計(jì)等。但是我們?cè)谑褂玫倪^程中往往會(huì)存在一些問題,本文我們就介紹了一個(gè)問題,并給出了它的解決方案,接下來就讓我們來一起了解一下這部分內(nèi)容吧。

1.問題:

如下ExampleTable表,求各種類(CategoryID)滿足Flag等于1的記錄數(shù)。

ID Flag CategoryID
1 1 1
2 1 1
3 1 2
4 1 2
5 0 3

          表1-ExampleTable

理想的結(jié)果應(yīng)該如下:

CategoryID TotalNum
1 2
2 2
3 0

表2-理想輸出結(jié)果

初看此問題,我們很容易寫出如下語句:

SELECT CategoryID,COUNT(1) AS TotalNum FROM ExampleTable WHERE flag = 1 GROUP BY CategoryID

可運(yùn)行之后得到的結(jié)果如下:

CategoryID TotalNum
1 2
2 2

表3-錯(cuò)誤輸出結(jié)果

沒有CategoryID=3,TotalNum=0的記錄。

2.原因分析:

造成以上結(jié)果的原因是因?yàn)樵赟ELECT語句中WHERE子句先于GROUP BY執(zhí)行,因此在執(zhí)行GROUP BY子句時(shí),表中的記錄已經(jīng)將Category = 3的記錄過濾,分組處理中自然不會(huì)計(jì)算在內(nèi)。

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)行排序。

3.解決方案:

構(gòu)造含有所有CategoeyID的結(jié)果集與其上語句所得結(jié)果集進(jìn)行連接,并利用NULL替換函數(shù)(如SQL SERVER中的ISNULL()、ORACLE中的NVL())將NULL替換為0。

示例語句如下:

 
 
 
  1. SELECT DISTINCT MainTable.CategoryID,ISNULL(SubTable.SubNum, 0) AS TotalNum FROM ExampleTable AS MainTable LEFT JOIN
  2. (SELECT CategoryID,COUNT(1) AS SubNum FROM ExampleTable WHERE flag = 1 GROUP BY CategoryID) AS SubTable
  3. ON MainTable.CategoryID = SubTable.CategoryID

執(zhí)行后即可返回正確的結(jié)果:

CategoryID TotalNum
1 2
2 2
3 0

表4-正確輸出結(jié)果

以上就是SQL Server數(shù)據(jù)庫中含有GROUP BY子句的SELECT語句中顯示COUNT()為0的結(jié)果的方法,本文就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!


文章名稱:含有GROUPBY子句的查詢中如何顯示COUNT()為0的結(jié)果
URL鏈接:http://www.5511xx.com/article/cdhehjs.html