**AVE(***recordset, value ***[ ***, expression ***] [, KEYED ] [, UNORDERED | ORDERED(** *bool
***) ] [, STABLE | UNSTABLE ] [, PARALLEL [
(** *numthreads ***) ] ] [,
ALGORITHM(** *name ***) ]
)**

**AVE(***valuelist***)**

recordset | The set of records to process. This may be the name of a dataset or a record set derived from some filter condition, or any expression that results in a derived record set. This also may be the keyword GROUP to indicate averaging the field values in a group. |

value | The expression to find the average value of. |

expression | Optional. A logical expression indicating which records to
include in the average. Valid only when the
recordset parameter is the keyword GROUP to
indicate averaging the elements in a group. |

KEYED | Optional. Specifies the activity is part of an index read operation, which allows the optimizer to generate optimal code for the operation. |

UNORDERED | Optional. Specifies the output record order is not significant. |

ORDERED | Specifies the significance of the output record order. |

bool | When False, specifies the output record order is not significant. When True, specifies the default output record order. |

STABLE | Optional. Specifies the input record order is significant. |

UNSTABLE | Optional. Specifies the input record order is not significant. |

PARALLEL | Optional. Try to evaluate this activity in parallel. |

numthreads | Optional. Try to evaluate this activity using
numthreads threads. |

ALGORITHM | Optional. Override the algorithm used for this activity. |

name | The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options. |

valuelist | A comma-delimited list of expressions to find the average value of. This may also be a SET of values. |

Return:* *AVE returns a single value.

The **AVE **function either returns the
average *value* (arithmetic mean) from the specified
*recordset *or the *valuelist*. It is
defined to return zero if the *recordset* is
empty.

Example:

```
AvgVal1 := AVE(4,8,16,2,1); //returns 6.2
SetVals := [4,8,16,2,1];
AvgVal2 := AVE(SetVals); //returns 6.2
OUTPUT(AvgVal1);
OUTPUT(AvgVal2);
```