憨厚生

          ----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)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 班戈县| 安新县| 平泉县| 稷山县| 齐河县| 抚顺县| 昌邑市| 南川市| 正定县| 商南县| 达孜县| 嘉善县| 淮安市| 乌鲁木齐县| 额敏县| 来宾市| 偏关县| 自贡市| 汤原县| 德阳市| 高碑店市| 沙洋县| 富平县| 固安县| 理塘县| 台北市| 讷河市| 桐柏县| 永兴县| 荃湾区| 石柱| 漾濞| 六枝特区| 丘北县| 安顺市| 吴川市| 大悟县| 长宁区| 泾源县| 庆云县| 车险|