SQL Server Tutorial SQL Server Advanced SQL Server Database SQL Server References

SQL Server AVG() Function



The SQL Server (Transact-SQL) AVG() function returns the average value of an expression.

Syntax

The syntax for using AVG() function is given below:

SELECT AVG(column_name) 
FROM table_name
WHERE condition(s);

The SQL Server (Transact-SQL) GROUP BY clause is used to arrange result table into identical groups when one or more columns are used. Please note that it is must to include those column names in a GROUP BY clause which are not encapsulated within the AVG() function. See the syntax below:

SELECT column1, column2, ...
       AVG(column_name) 
FROM table_name
WHERE condition(s)
GROUP BY column1, column2, ...;

Parameters

column1, column2, ... Specify the column names that are not encapsulated within the AVG() function. It must be included in the GROUP BY clause.
column_name Specify the column or expression whose average value need to be calculated.
table_name Specify the table name from where the records need to retrieved.
WHERE condition(s) Optional. Specify the condition(s). Records are selected based upon specified condition(s).

Return Value

Returns the average value of a given expression.

Example - With Single Column

Consider a database table called Employee with the following records:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

To get the average salary of employee with age greater than 25, the following query can be used:

SELECT AVG(Salary) AS AvgSalary 
FROM Employee
WHERE Age > 25;

This will produce the result as shown below:

AvgSalary
2925.0


Example - Using DISTINCT

The DISTICT clause can be used with AVG() function. For example - To get the average value of distinct (unique) salaries, the following code can be used:

SELECT AVG(DISTINCT Salary) AS AvgUniqueSalary 
FROM Employee;

This will produce the result as shown below:

AvgUniqueSalary
2912.5


Example - Using Formula

The expression contained within the AVG() function does not need to be a single field. A formula can also be used with this function. For example - Consider a bonus (15% of Salary) is given to each employee, and to calculate the average of bonus amount, the following query can be used:

SELECT AVG(Salary * 0.15) AS AvgBonusAmount
FROM Employee;

This will produce the result as shown below:

AvgBonusAmount
436.25


Example - Using GROUP BY

To get the average salary of employees group by their age, the following query can be used:

SELECT Age, AVG(Salary) AS AvgSalaryByAge 
FROM Employee
GROUP BY Age;

This result of the above code will be:

AgeAvgSalaryByAge
242750.0
253000.0
272800.0
282900.0
303100.0

❮ SQL Server Functions