# Calculate the moving average

Use movingAverage() or timedMovingAverage() to return the moving average of data.

data
|> movingAverage(n: 5)

// OR

data
|> timedMovingAverage(every: 5m, period: 10m)

### movingAverage()

For each row in a table, movingAverage() returns the average of the current value and previous values where n is the total number of values used to calculate the average.

If n = 3:

Row #Calculation
1Insufficient number of rows
2Insufficient number of rows
3(Row1 + Row2 + Row3) / 3
4(Row2 + Row3 + Row4) / 3
5(Row3 + Row4 + Row5) / 3

Given the following input:

_time_value
2020-01-01T00:01:00Z1.0
2020-01-01T00:02:00Z1.2
2020-01-01T00:03:00Z1.8
2020-01-01T00:04:00Z0.9
2020-01-01T00:05:00Z1.4
2020-01-01T00:06:00Z2.0

The following would return:

|> movingAverage(n: 3)
_time_value
2020-01-01T00:03:00Z1.33
2020-01-01T00:04:00Z1.30
2020-01-01T00:05:00Z1.36
2020-01-01T00:06:00Z1.43

### timedMovingAverage()

For each row in a table, timedMovingAverage() returns the average of the current value and all row values in the previous period (duration). It returns moving averages at a frequency defined by the every parameter.

Each color in the diagram below represents a period of time used to calculate an average and the time a point representing the average is returned. If every = 30m and period = 1h:

Given the following input:

_time_value
2020-01-01T00:00:00Z1.0
2020-01-01T00:30:00Z1.2
2020-01-01T01:00:00Z1.8
2020-01-01T01:30:00Z0.9
2020-01-01T02:00:00Z1.4
2020-01-01T02:30:00Z2.0
2020-01-01T03:00:00Z1.9

The following would return:

|> timedMovingAverage(every: 30m, period: 1h)
_time_value
2020-01-01T00:30:00Z1.0
2020-01-01T01:00:00Z1.1
2020-01-01T01:30:00Z1.5
2020-01-01T02:00:00Z1.35
2020-01-01T02:30:00Z1.15
2020-01-01T03:00:00Z1.7
2020-01-01T03:00:00Z2

### Introducing InfluxDB 3.0

The new core of InfluxDB built with Rust and Apache Arrow. Available today in InfluxDB Cloud Dedicated.

### State of the InfluxDB Cloud Serverless documentation

The new documentation for InfluxDB Cloud Serverless is a work in progress. We are adding new information and content almost daily. Thank you for your patience!

If there is specific information you’re looking for, please submit a documentation issue.