Description
Calculates the average of the values of the column.
Syntax
Avg ( column { FOR range { DISTINCT { expres1 {, expres2 {, ... } } } } } )
Argument 
Description 

column 
The column for which you want the average of the data values. Column can be the column name or the column number preceded by a pound sign (#). Column can also be an expression that includes a reference to the column. The datatype of column must be numeric. 
FOR range (optional) 
The data that will be included in the average. For most presentation styles, values for range are:
For Crosstabs, specify CROSSTAB for range:
For Graph and OLE objects, specify one of the following:

DISTINCT (optional) 
Causes Avg to consider only the distinct values in column when calculating the average. For a value of column, the first row found with the value is used and other rows that have the same value are ignored. 
expresn (optional) 
One or more expressions that you want to evaluate to determine distinct rows. Expresn can be the name of a column, a function, or an expression. 
Return value
The numeric datatype of the column. Returns the average of the values of the rows in range.
Usage
If you specify range, Avg returns the average value of column in range. If you specify DISTINCT, Avg returns the average value of the distinct values in column, or if you specify expresn, the average of column for each distinct value of expresn.
For graphs and OLE objects, you do not select the range when you call the function. The range has already been determined by the Rows setting on the Data property page (the Range property), and the aggregation function uses that range. Settings for Rows include the following:

For the Graph or OLE presentation style, Rows is always All.

For Graph controls, Rows can be All, Page, or Group.

For OLE controls, Rows can be All, Current Row, Page, or Group. The available choices depend on the layer the control occupies.
In calculating the average, null values are ignored.
Not in validation rules or filter expressions
You cannot use this or other aggregate functions in validation rules or filter expressions.
Using an aggregate function cancels the effect of setting Retrieve Rows As Needed in the painter. To do the aggregation, a report always retrieves all rows.
Examples
This expression returns the average of the values in the column named salary:
Avg(salary)
This expression returns the average of the values in group 1 in the column named salary:
Avg(salary for group 1)
This expression returns the average of the values in column 5 on the current page:
Avg(#5 for page)
This computed field returns Above Average if the average salary for the page is greater than the average salary:
If(Avg(salary for page) > Avg(salary), "Above Average", " ")
This expression for a graph value sets the data to the average value of the sale_price column:
Avg(sale_price)
This expression for a graph value sets the data value to the average value of the sale_price column for the entire graph:
Avg(sale_price for graph)
Assuming a report displays the order number, amount, and line items for each order, this computed field returns the average of the order amount for the distinct order numbers:
Avg(order_amt for all DISTINCT order_nbr)
See also