使用 GROUP BY 分組行 [SQL Server]

來源:互聯網
上載者:User

Group By 子句用於對結果集進行分組,並對每一組資料進行匯總計算。

文法格式:

Group By  [列名]  [HAVING  條件運算式]

Group By按“列名”指定的列進行分組,將該列列值相同的記錄組成一組,並對每一組進行匯總計算。每一組產生一條記錄。若有“HAVING  條件運算式”,則表示對產生的組進行篩選。

 

假如,TableX 表包含:

--------------------------------

ColumnA  ColumnB  ColumnC


1      abc       5

1      def      4

1      ghi      9

2      jkl       8

2      mno      3


如果 ColumnA 是組合列,則結果集中最終將有兩行,其中一行匯總值 1 的資訊,而另一行匯總值 2 的資訊。

如果 ColumnA 是組合列,要引用 ColumnBColumnC,這兩列必須是能為 ColumnA 中的每個值返回單個值的彙總函式中的參數。挑選清單中可以包含諸如 MAX (ColumnB)、SUM (ColumnC) 或 AVG (ColumnC) 之類的運算式:

SELECT ColumnA,  
MAX(ColumnB) AS MaxB,
SUM(ColumnC) AS SumC
FROM TableX
GROUP BY ColumnA

此選擇語句返回兩行,為 ColumnA 中的每個唯一值各返回一行:

ColumnA     MaxB     SumC        
----------- ---- ----------- 
1                ghi           18          
2                mno          11          
(2 row(s) affected)

但是,挑選清單中不能只包含 ColumnB 運算式:

SELECT  
ColumnA,
ColumnB,
SUM(ColumnC) AS SumC
FROM TableX
GROUP BY ColumnA

  由於 GROUP BY 只能返回一行,該行在 ColumnA 中的值為 1,因此無法返回與 ColumnA 中的值 1 關聯的 ColumnB 中的三個值(abc、def 和 ghi)。

不能對 ntexttextimagebit 列使用 GROUP BY 或 HAVING,除非它們所在的函數返回的值屬於其他資料類型。這樣的函數包括 SUBSTRING 和 CAST。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.