> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firebolt.io/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.firebolt.io/feedback

```json
{
  "path": "/reference-sql/functions-reference/aggregation/avg",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

> Reference material for AVG

# AVG

Calculates the average of an expression.

## Syntax

```sql theme={"theme":{"light":"github-light","dark":"github-dark"}}
AVG(<value>) [FILTER ([WHERE] <condition>)]
```

## Parameters

| Parameter     | Description                                                       | Supported input types |
| :------------ | :---------------------------------------------------------------- | :-------------------- |
| `<value>`     | The expression used to calculate the average                      | Any numeric type      |
| `<condition>` | An optional boolean expression to filter rows used in aggregation | `BOOL`                |

Valid values for the expression include column names or functions that return a column name (or columns) that contain numeric values.

The `AVG()` aggregate function ignores rows with `NULL` values. For example, an `AVG` from 3 rows containing `1`, `2`, and `NULL` returns `1.5` because the `NULL` row is not counted. To calculate an average that includes `NULL`, use `SUM(COLUMN)/COUNT(*)`.

## Return Types

* `NUMERIC` if the input is type `INTEGER`, `BIGINT` or `NUMERIC`
* `DOUBLE PRECISION` if the input is type `REAL` or `DOUBLE PRECISION`

## Precision and Determinism

Applying `AVG` to REAL and DOUBLE PRECISION is subject to [floating point arithmetic accuracy limitations](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems) and its resulting error.
This error may add up when aggregating multiple values.

The order of operations while computing the aggregate is non-deterministic.
This can lead to varying total floating point error when running a query multiple times.
If this is not acceptable for your use-case, aggregate on [NUMERIC](/reference-sql/data-types/numeric) data instead.

## Example

The example below uses the following table `LevelPoints`. This table includes the maximum points a player can score at each level of the game:

| levels | maxpoints |
| :----- | :-------- |
| 1      | 50        |
| 2      | 100       |
| 3      | 150       |
| 4      | 200       |
| 5      | 250       |

Use the query below to find the average of the `maxpoints` value.

```sql theme={"theme":{"light":"github-light","dark":"github-dark"}}
SELECT 
    AVG(maxpoints) AS AverageMaxPoints 
FROM levels;
```

**Returns**:

| AverageMaxPoints |
| :--------------- |
| 150              |
