在本教學中,將瞭解和學習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日期函數