SQL Server聚合函數

在本教學中,將瞭解和學習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)

在這個語法中;

  • 首先,指定要使用的聚合函數的名稱,例如:AVGSUMMAX
  • 其次,如果只想在計算中考慮不同的值,則使用DISTINCT;如果在計算中考慮所有值,則使用ALL。 默認情況下,如果未指定任何修飾符,則使用ALL
  • 第三,expression可以是表的列,也可以是由具有算術運算符的多個列組成的運算式。

SQL Server聚合函數示例

下麵將使用示例資料庫中的products表進行演示。

products表結構

1. AVG()函數示例
以下語句使用AVG()函數返回products表中所有產品的平均價格:

SELECT
    AVG(list_price) avg_product_price
FROM
    production.products;

執行上面查詢語句,得到以下結果:

查詢平均價格

上圖中平均價格有6位小數。一般需要將結果舍入到兩位小數的數字。 為此,可以使用ROUNDCAST函數,如以下查詢中所示:

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表。

socks表結構

以下語句使用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;

執行上面查詢語句,得到以下結果:
STEEV計算標準方差

在本教學中,瞭解並學習了SQL Server聚合函數以及如何使用它們來計算聚合。


上一篇: SQL Server觸發器 下一篇: SQL Server日期函數