風(fēng)雨無阻

          深入淺出SQL教程之Group By和Having

          在介紹GROUP BY 和 HAVING 子句前,我們必需先講講sql語言中一種特殊的函數(shù):聚合函數(shù),例如SUM, COUNT, MAX, AVG等。這些函數(shù)和其它函數(shù)的根本區(qū)別就是它們一般作用在多條記錄上。 

          SELECT SUM(population) FROM bbc 

          這里的SUM作用在所有返回記錄的population字段上,結(jié)果就是該查詢只返回一個結(jié)果,即所有國家的總?cè)丝跀?shù)。 

          通過使用GROUP BY 子句,可以讓SUM 和 COUNT 這些函數(shù)對屬于一組的數(shù)據(jù)起作用。當(dāng)你指定 GROUP BY region 時, 屬于同一個region(地區(qū))的一組數(shù)據(jù)將只能返回一行值,也就是說,表中所有除region(地區(qū))的字段,只能通過 SUM, COUNT等聚合函數(shù)運(yùn)算后返回一個值。  HAVING子句可以讓我們篩選成組后的各組數(shù)據(jù),WHERE子句在聚合前先篩選記錄.也就是說作用在GROUP BY 子句和HAVING子句前,而 HAVING子句在聚合后對組記錄進(jìn)行篩選。 

          讓我們還是通過具體的實例來理解GROUP BY 和 HAVING 子句,還采用第三節(jié)介紹的bbc表。 

          SQL實例: 

          一、顯示每個地區(qū)的總?cè)丝跀?shù)和總面積: 

          SELECT region, SUM(population), SUM(area)

          FROM bbc

          GROUP BY region

           

          先以region把返回記錄分成多個組,這就是GROUP BY的字面含義。分完組后,然后用聚合函數(shù)對每組中的不同字段(一或多條記錄)作運(yùn)算。 

          二、 顯示每個地區(qū)的總?cè)丝跀?shù)和總面積.僅顯示那些面積超過1000000的地區(qū)。 

          SELECT region, SUM(population), SUM(area)

          FROM bbc

          GROUP BY region

          HAVING SUM(area)>1000000

           

          在這里,我們不能用where來篩選超過1000000的地區(qū),因為表中不存在這樣一條記錄。 

          相反,HAVING子句可以讓我們篩選成組后的各組數(shù)據(jù)。


          group by分組統(tǒng)計SQL語句(實例)

          用一條查詢語句,查出各姓名的數(shù)值余額.

          用戶表:
          姓名
          a
          b
          c
          ....

          扣費表:
          姓名 數(shù)值
          a 3.5
          b 5.2
          a 2
          ...

          充值表:
          姓名 數(shù)值
          b 10
          a 10
          a 10.5
          ...

          返回:
          姓名 差額(充值和-扣費和)

          測試通過

          select table1.TNAME,table1.TelName, (table3.充值-table2.扣費) as 差額
          from 用戶表 table1,(select TelName,sum(TelQryh)as 扣費 from 扣費表 group by TelName)table2,
          (select TelName,sum(TelQryc)as 充值 from 充值表 group by TelName)table3 where
          table1.TelName=table2.TelName and table1.TelName=table3.TelName

          posted on 2008-04-12 19:32 秋楓故事 閱讀(145) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          新聞檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 龙胜| 阿克陶县| 铜陵市| 龙泉市| 乐亭县| 宁河县| 曲水县| 康保县| 定结县| 芷江| 安新县| 都昌县| 湖口县| 大田县| 玉林市| 宁明县| 理塘县| 南部县| 思南县| 洪湖市| 湖州市| 元朗区| 赞皇县| 册亨县| 陆河县| 苏州市| 高雄县| 靖安县| 甘泉县| 寻乌县| 青浦区| 雅江县| 宁城县| 凤山县| 商洛市| 崇文区| 滦平县| 淅川县| 望城县| 姚安县| 三原县|