憨厚生

          ----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 二胡 閱讀(515) 評論(0)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 高碑店市| 石河子市| 滨海县| 白玉县| 台湾省| 大宁县| 娄烦县| 深泽县| 鄂托克前旗| 怀柔区| 加查县| 景洪市| 海阳市| 洪洞县| 克拉玛依市| 绥阳县| 安吉县| 宁南县| 桦甸市| 宜君县| 新沂市| 获嘉县| 东海县| 滨州市| 青铜峡市| 绥芬河市| 临沭县| 石泉县| 迁安市| 大安市| 黄山市| 绥芬河市| 湛江市| 获嘉县| 津市市| 远安县| 南阳市| 高唐县| 蒙城县| 三江| 泸水县|