1.概述
在SQL Server中,微軟提供了多個聚合函數,使用這些聚合函數方便.NET開發者對數據進行統計和計算,無需自行編寫函數來實現這些功能,如:統計個數、求和、求平均值等。
這裡重點講解常用的SUM()、COUNT()、AVG()、MAX()和MIN()方法,通過在SQL語句中使用聚合函數來查詢表中的數據。
2.使用聚合函數查詢
2.1. SUM()函數
在SQL Server中,SUM()函數是求和函數,可以將所有行數據中指定列的數值相加,計算出總和。
例如:統計出BW_Student表中所有年齡等於21的年齡總和。編寫SQL語句如下:
SELECT SUM(Age) as 總年齡 FROM BW_Student where Age=21
運行一下此SQL語句:
在圖1中,通過SUM()函數,我們求出了所有年齡為21的年齡總和是84。
在上圖中有兩個查詢可以一起運行,一個是查詢所有數據,一個是查詢出年齡總和。我們使用了SUM(Age)函數對Age列的值求和。
2.2. COUNT()函數
在SQL Server中,COUNT()函數是統計記錄個數函數,可以統計出滿足條件的所有行數據的總個數。
例如:統計出BW_Student表中有多少個年齡為21的學生。編寫SQL語句如下:
SELECT COUNT(Age) as 行數 FROM BW_Student where Age=21
運行一下結果:
在圖2中,使用了COUNT(Age)函數對Age欄位統計記錄的個數,從結果上看,共有4個年齡滿足條件Age=21。
COUNT()函數隻統計記錄的個數,也就是行數。一行數據就是一條記錄。
在上面的SQL語句中,還使用了as關鍵字給COUNT(Age)函數起個別名為「行數」。
2.3. AVG()函數
在SQL Server中,AVG()函數是求平均值的函數。
例如:統計出BW_Student表中所有學生的平均年齡。編寫SQL語句如下:
SELECT AVG(Age) as 行數 FROM BW_Student
運行一下結果:
在圖3中,使用了AVG(Age)函數對年齡求平均值,結果為23。
2.4. MAX()函數
在SQL Server中,MAX()函數是求最大值函數。可在指定的列值中快速找出最大值。
例如:求出BW_Student表中最大的年齡值。
SELECT MAX(Age) as 最大值 FROM BW_Student
運行一下結果:
在圖4中找出的最大年齡值是56。使用MAX()函數的好處是該函數的功能已封裝好,我們只需要使用它來得到最大值即可,無需我們自行開發封裝。
2.5. MIN()函數
在SQL Server中,MIN()函數是求最小值函數。如下SQL語句:
SELECT MIN(Age) as 最小值 FROM BW_Student
運行一下結果:
在圖5的結果中,得出的最小值是12,Min(Age)表示對Age欄位中的所有值中求出最小值。
對於SQL Server中的聚合函數,其圓括號()中是操作的欄位名,或稱為列名,注意,針對聚合函數,都是數字類型的。如果是字符串值,則是無法求最大值、最小值、平均值和求和的。
其實在C#中,也有聚合函數,且與SQL Server中的聚合函數的含義是一樣的,甚至函數名稱都一樣。
至於是在C#中使用聚合函數,還是在SQL Server中使用聚合函數,這要看總體的應用程式是如何設計了。