憨厚生

          ----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)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 永胜县| 泸西县| 肃南| 郴州市| 长泰县| 旅游| 阿鲁科尔沁旗| 霸州市| 嘉祥县| 合川市| 蓬溪县| 富平县| 宜君县| 香格里拉县| 伊金霍洛旗| 鄂伦春自治旗| 万载县| 孟州市| 乐清市| 彩票| 乌什县| 保靖县| 宁化县| 阿拉尔市| 石景山区| 石门县| 桦南县| 甘肃省| 田东县| 维西| 枣庄市| 富蕴县| 岳西县| 江津市| 灵丘县| 寿阳县| 休宁县| 内黄县| 筠连县| 延川县| 浪卡子县|