風雨無阻

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

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

          SELECT SUM(population) FROM bbc 

          這里的SUM作用在所有返回記錄的population字段上,結果就是該查詢只返回一個結果,即所有國家的總人口數。 

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

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

          SQL實例: 

          一、顯示每個地區的總人口數和總面積: 

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

          FROM bbc

          GROUP BY region

           

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

          二、 顯示每個地區的總人口數和總面積.僅顯示那些面積超過1000000的地區。 

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

          FROM bbc

          GROUP BY region

          HAVING SUM(area)>1000000

           

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

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


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

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

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

          扣費表:
          姓名 數值
          a 3.5
          b 5.2
          a 2
          ...

          充值表:
          姓名 數值
          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)  編輯  收藏


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


          網站導航:
           
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          新聞檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 屏边| 保德县| 广德县| 许昌县| 长寿区| 呼伦贝尔市| 文登市| 兴业县| 邯郸县| 内丘县| 桂林市| 灵宝市| 高密市| 郑州市| 凤城市| 黔西| 雷波县| 瑞昌市| 运城市| 天祝| 揭阳市| 阜南县| 新竹市| 治县。| 广灵县| 城固县| 丹阳市| 昌都县| 武强县| 璧山县| 囊谦县| 清河县| 金乡县| 合江县| 同仁县| 苗栗市| 西和县| 白河县| 石泉县| 叙永县| 靖西县|