Share via


AVG (Transact-SQL)

傳回群組中各個值的平均值。會忽略 Null 值。後面可能接著 OVER 子句

主題連結圖示Transact-SQL 語法慣例

語法

AVG ( [ ALL | DISTINCT ] expression ) 

引數

  • ALL
    將彙總函數套用至所有值。ALL 是預設值。
  • DISTINCT
    指定只在值的每個唯一執行個體上執行 AVG,不論值出現多少次,都是如此。
  • expression
    這是精確數值或近似數值資料類型類別目錄的運算式,但 bit 資料類型除外。不允許彙總函數和子查詢。

傳回類型

傳回類型取決於 expression 評估結果的類型。

運算式結果 傳回類型

整數類別目錄

int

decimal 類別目錄 (p, s)

decimal(38, s) 除以 decimal(10, 0)

moneysmallmoney 類別目錄

money

floatreal 類別目錄

float

ms177677.note(zh-tw,SQL.90).gif重要事項:
當您使用 CUBE 或 ROLLUP 時,不支援個別彙總,如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用它們的話,SQL Server 2005 Database Engine 會傳回錯誤訊息,並取消查詢。

備註

如果 expression 的資料類型是一個別名資料類型,傳回類型也是別名資料類型。不過,如果別名資料類型的基底資料類型升級,例如,從 tinyint 升級到 int,傳回值就是升級的資料類型,而不是別名資料類型。

範例

A. 利用 SUM 和 AVG 函數計算

下列範例會計算 Adventure Works Cycles 的副總裁所用的平均假期時數及病假時數總和。每個這些彙總函數都會產生所有擷取的資料列之單一摘要值。

USE AdventureWorks;
GO
SELECT AVG(VacationHours)as 'Average vacation hours', 
    SUM  (SickLeaveHours) as 'Total sick leave hours'
FROM HumanResources.Employee
WHERE Title LIKE 'Vice President%';

以下為結果集:

Average vacation hours       Total sick leave hours 
----------------------       ---------------------- 
25                           97

(1 row(s) affected)

B. 搭配 GROUP BY 子句使用 SUM 和 AVG 函數

當搭配 GROUP BY 子句使用時,每個彙總函數都會產生每個群組的單一值,而不是整份資料表的單一值。下列範例會產生每個銷售領域的摘要值。摘要會列出每個領域的銷售人員所收到的平均獎金,及每個領域年初至今的銷售總和。

USE AdventureWorks;
GO
SELECT TerritoryID, AVG(Bonus)as 'Average bonus', SUM(SalesYTD) 'YTD sales'
FROM Sales.SalesPerson
GROUP BY TerritoryID;
GO

C. 搭配 DISTINCT 使用 AVG

下列陳述式會傳回產品的平均標價。

USE AdventureWorks;
GO
SELECT AVG(DISTINCT ListPrice)
FROM Production.Product;

以下為結果集:

------------------------------
437.4042
(1 row(s) affected)
 

D. 使用不含 DISTINCT 的 AVG

當沒有 DISTINCT 時,AVG 函數會尋找 Product 資料表中所有產品的平均標價。

USE AdventureWorks;
GO
SELECT AVG(ListPrice)
FROM Production.Product;

以下為結果集:

------------------------------
438.6662
(1 row(s) affected)

請參閱

參考

彙總函數 (Transact-SQL)
OVER 子句 (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助