在本教學中,將瞭解和學習SQL Server聚合函數以及如何使用它們來計算聚合。
聚合函數執行一個或多個值的計算並返回單個值。 聚合函數通常與SELECT語句的GROUP BY子句和HAVING子句一起使用。
下表顯示了SQL Server中的聚合函數:
| 編號 | 聚合函數 | 描述 |
|---|---|---|
| 1 | AVG()函數 | AVG()函數用於計算集合中非NULL值的平均值。 |
| 2 | CHECKSUM_AGG()函數 | CHECKSUM_AGG()函數根據一組行計算校驗和值。 |
| 3 | COUNT()函數 | COUNT()函數返回集合中的行數,包括具有NULL值的行。 |
| 4 | COUNT_BIG()函數 | COUNT_BIG()函數返回組中的行數(具有BIGINT數據類型),包括具有NULL值的行。 |
| 5 | MAX()函數 | MAX()函數返回集合中非NULL值中的最大值。 |
| 6 | MIN()函數 | MIN()函數返回集合中非NULL值中的最小值。 |
| 7 | STDEV()函數 | STDEV()函數返回所提供運算式的所有值的統計標準偏差,但基於數據總體的樣本。 |
| 8 | STDEVP()函數 | STDEVP()函數還返回所提供運算式的所有值的標準偏差,但基於整個數據填充。 |
| 9 | SUM()函數 | SUM()函數返回集合中所有非NULL值的總和。 |
| 10 | VAR()函數 | VAR()函數根據指定總體的樣本,返回運算式中值的統計方差。 |
| 11 | VARP()函數 | VARP()函數返回運算式中值的統計方差,但是基於整個數據總體。 |
SQL Server聚合函數語法
以下是聚合函數的語法:
aggregate_function_name(DISTINCT | ALL expression)
在這個語法中;
- 首先,指定要使用的聚合函數的名稱,例如:
AVG,SUM和MAX。 - 其次,如果只想在計算中考慮不同的值,則使用
DISTINCT;如果在計算中考慮所有值,則使用ALL。 默認情況下,如果未指定任何修飾符,則使用ALL。 - 第三,
expression可以是表的列,也可以是由具有算術運算符的多個列組成的運算式。
SQL Server聚合函數示例
下麵將使用示例資料庫中的products表進行演示。

1. AVG()函數示例
以下語句使用AVG()函數返回products表中所有產品的平均價格:
SELECT
AVG(list_price) avg_product_price
FROM
production.products;
執行上面查詢語句,得到以下結果:

上圖中平均價格有6位小數。一般需要將結果舍入到兩位小數的數字。 為此,可以使用ROUND和CAST函數,如以下查詢中所示:
SELECT
CAST(ROUND(AVG(list_price),2) AS DEC(10,2))
avg_product_price
FROM
production.products;
執行上面查詢語句,得到以下結果:
首先,ROUND函數返回舍入的平均價格。 然後CAST函數將結果轉換為帶有兩個小數位的十進位數。
2. COUNT()函數示例
以下語句使用COUNT()函數返回價格大於500的產品數量:
SELECT
COUNT(*) product_count
FROM
production.products
WHERE
list_price > 500;
執行上面查詢語句,得到以下結果:
在這個例子中:
- 首先,
WHERE子句獲取價格大於500的產品。 - 其次,
COUNT函數返回價格大於500的產品數量。
3. MAX()函數示例
以下語句使用MAX()函數返回所有產品的最高定價:
SELECT
MAX(list_price) max_list_price
FROM
production.products;
執行上面查詢語句,得到以下結果:
4. MIN()函數示例
同樣,以下語句使用MIN()函數返回所有產品的最低定價:
SELECT
MIN(list_price) min_list_price
FROM
production.products;
執行上面查詢語句,得到以下結果:

5. SUM()函數示例
為了方便演示SUM()函數的使用,下麵將使用示例資料庫中的stocks表。

以下語句使用SUM()函數計算所有倉庫中產品ID的總庫存:
SELECT
product_id,
SUM(quantity) stock_count
FROM
production.stocks
GROUP BY
product_id
ORDER BY
stock_count DESC;
執行上面查詢語句,得到以下結果:

以下是該語句的工作原理:
- 首先,
GROUP BY子句按產品ID將行匯總為組。 - 其次,
SUM()函數計算每個組的數量總和。
6. STDEV()函數示例
以下語句使用STDEV()函數計算所有價格的統計標準差:
SELECT
CAST(ROUND(STDEV(list_price),2) as DEC(10,2)) stdev_list_price
FROM
production.products;
執行上面查詢語句,得到以下結果:
在本教學中,瞭解並學習了SQL Server聚合函數以及如何使用它們來計算聚合。
上一篇:
SQL Server觸發器
下一篇:
SQL Server日期函數
