憨厚生

          ----Java's Slave----
          ***Java's Host***

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks
          轉 http://www.cnblogs.com/myhsg/archive/2008/08/05/1261386.html

          1. GROUP BY 是分組查詢, 一般 GROUP BY 是和聚合函數配合使用

          group by 有一個原則,就是 select 后面的所有列中,沒有使用聚合函數的列,必須出現在 group by 后面(重要)

          例如,有如下數據庫表:

          A    B
          1    abc
          1    bcd

          1    asdfg

           如果有如下查詢語句(該語句是錯誤的,原因見前面的原則

          select A,B from table group by A 

          該查詢語句的意圖是想得到如下結果(當然只是一相情愿)

          A     B
                 abc
          1     bcd

                 asdfg 

          右邊3條如何變成一條,所以需要用到聚合函數,如下(下面是正確的寫法):

          select A,count(B) as 數量 from table group by A
          這樣的結果就是
          A    數量
          1    3 

           

          2. Having

          where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,條件中不能包含聚組函數,使用where條件顯示特定的行

          having 子句的作用是篩選滿足條件的組,即在分組之后過濾數據條件中經常包含聚組函數,使用having 條件顯示特定的組,也可以使用多個分組標準進行分組。

          having 子句被限制子已經在SELECT語句中定義的列和聚合表達式上。通常,你需要通過在HAVING子句中重復聚合函數表達式來引用聚合值,就如你在SELECT語句中做的那樣。例如:

          SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2

          posted on 2009-03-08 10:02 二胡 閱讀(522) 評論(0)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 府谷县| 澄迈县| 荔波县| 河北省| 张家川| 澄江县| 桓仁| 社旗县| 福建省| 民丰县| 南澳县| 津南区| 舟山市| 当阳市| 宕昌县| 榆社县| 泰顺县| 田东县| 安多县| 昭苏县| 扎囊县| 盐源县| 元谋县| 德江县| 北流市| 九寨沟县| 砚山县| 彝良县| 古蔺县| 全州县| 青岛市| 南安市| 镇原县| 高要市| 滦南县| 陕西省| 石家庄市| 古丈县| 嘉善县| 阳新县| 滦平县|