---
title: Calculate the moving average
description: Use the movingAverage() or timedMovingAverage() functions to return the moving average of data.
url: https://docs.influxdata.com/influxdb/cloud/query-data/flux/moving-average/
estimated_tokens: 980
product: InfluxDB Cloud (TSM)
version: cloud
publisher: InfluxData
canonical: https://docs.influxdata.com/influxdb/cloud/query-data/flux/moving-average/
date: '2025-04-02T15:54:32-06:00'
lastmod: '2025-04-02T15:54:32-06:00'
---

Use [`movingAverage()`](/flux/v0/stdlib/universe/movingaverage/)or [`timedMovingAverage()`](/flux/v0/stdlib/universe/timedmovingaverage/)to return the moving average of data.

```js
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         |
|-----|-----------------------------|
|  1  |*Insufficient number of rows*|
|  2  |*Insufficient 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:00Z|  1.0  |
|2020-01-01T00:02:00Z|  1.2  |
|2020-01-01T00:03:00Z|  1.8  |
|2020-01-01T00:04:00Z|  0.9  |
|2020-01-01T00:05:00Z|  1.4  |
|2020-01-01T00:06:00Z|  2.0  |

**The following would return:**

```js
|> movingAverage(n: 3)
```

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:03:00Z| 1.33  |
|2020-01-01T00:04:00Z| 1.30  |
|2020-01-01T00:05:00Z| 1.36  |
|2020-01-01T00:06:00Z| 1.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`:

0:000:301:001:302:002:303:003:002:302:001:301:000:30

**Given the following input:**

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:00:00Z|  1.0  |
|2020-01-01T00:30:00Z|  1.2  |
|2020-01-01T01:00:00Z|  1.8  |
|2020-01-01T01:30:00Z|  0.9  |
|2020-01-01T02:00:00Z|  1.4  |
|2020-01-01T02:30:00Z|  2.0  |
|2020-01-01T03:00:00Z|  1.9  |

**The following would return:**

```js
|> timedMovingAverage(every: 30m, period: 1h)
```

|       \_time       |\_value|
|--------------------|-------|
|2020-01-01T00:30:00Z|  1.0  |
|2020-01-01T01:00:00Z|  1.1  |
|2020-01-01T01:30:00Z|  1.5  |
|2020-01-01T02:00:00Z| 1.35  |
|2020-01-01T02:30:00Z| 1.15  |
|2020-01-01T03:00:00Z|  1.7  |
|2020-01-01T03:00:00Z|   2   |

#### Related

* [movingAverage() function](/flux/v0/stdlib/universe/movingaverage/)
* [timedMovingAverage() function](/flux/v0/stdlib/universe/timedmovingaverage/)

[query](/influxdb/cloud/tags/query/)[moving average](/influxdb/cloud/tags/moving-average/)
| Row # | Calculation |
| --- | --- |
| Row # | Calculation |
| 1 | Insufficient number of rows |
| 2 | Insufficient number of rows |
| 3 | (Row1 + Row2 + Row3) / 3 |
| 4 | (Row2 + Row3 + Row4) / 3 |
| 5 | (Row3 + Row4 + Row5) / 3 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:01:00Z | 1.0 |
| 2020-01-01T00:02:00Z | 1.2 |
| 2020-01-01T00:03:00Z | 1.8 |
| 2020-01-01T00:04:00Z | 0.9 |
| 2020-01-01T00:05:00Z | 1.4 |
| 2020-01-01T00:06:00Z | 2.0 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:03:00Z | 1.33 |
| 2020-01-01T00:04:00Z | 1.30 |
| 2020-01-01T00:05:00Z | 1.36 |
| 2020-01-01T00:06:00Z | 1.43 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:00:00Z | 1.0 |
| 2020-01-01T00:30:00Z | 1.2 |
| 2020-01-01T01:00:00Z | 1.8 |
| 2020-01-01T01:30:00Z | 0.9 |
| 2020-01-01T02:00:00Z | 1.4 |
| 2020-01-01T02:30:00Z | 2.0 |
| 2020-01-01T03:00:00Z | 1.9 |

| _time | _value |
| --- | --- |
| _time | _value |
| 2020-01-01T00:30:00Z | 1.0 |
| 2020-01-01T01:00:00Z | 1.1 |
| 2020-01-01T01:30:00Z | 1.5 |
| 2020-01-01T02:00:00Z | 1.35 |
| 2020-01-01T02:30:00Z | 1.15 |
| 2020-01-01T03:00:00Z | 1.7 |
| 2020-01-01T03:00:00Z | 2 |
