---
title: Query cumulative sum
description: Use the cumulativeSum() function to calculate a running total of values.
url: https://docs.influxdata.com/influxdb/v2/query-data/flux/cumulativesum/
estimated_tokens: 1092
product: InfluxDB OSS v2
version: v2
---

# Query cumulative sum

This page documents an earlier version of InfluxDB OSS. [InfluxDB 3 Core](/influxdb3/core/) is the latest stable version.

#### API token hashing is enabled by default in InfluxDB OSS 2.9.0

Stronger token security: tokens are stored as hashes on disk, so a copy of the database file doesn’t expose usable tokens. Existing tokens are hashed on first startup and the original strings can’t be recovered afterward — **capture any plaintext tokens you still need before you upgrade**.

For more information, see [Token hashing](/influxdb/v2/admin/tokens/#token-hashing).

Use the [`cumulativeSum()` function](/flux/v0/stdlib/universe/cumulativesum/) to calculate a running total of values. `cumulativeSum` sums the values of subsequent records and returns each row updated with the summed total.

**Given the following input table:**

| _time | _value |
| --- | --- |
| 0001 | 1 |
| 0002 | 2 |
| 0003 | 1 |
| 0004 | 3 |

**`cumulativeSum()` returns:**

| _time | _value |
| --- | --- |
| 0001 | 1 |
| 0002 | 3 |
| 0003 | 4 |
| 0004 | 7 |

The examples below use the [example data variable](/influxdb/v2/query-data/flux/#example-data-variable).

##### Calculate the running total of values

```js
data
    |> cumulativeSum()
```

## Use cumulativeSum() with aggregateWindow()

[`aggregateWindow()`](/flux/v0/stdlib/universe/aggregatewindow/) segments data into windows of time, aggregates data in each window into a single point, then removes the time-based segmentation. It is primarily used to [downsample data](/influxdb/v2/process-data/common-tasks/downsample-data/).

`aggregateWindow()` expects an aggregate function that returns a single row for each time window. To use `cumulativeSum()` with `aggregateWindow`, use `sum` in `aggregateWindow()`, then calculate the running total of the aggregate values with `cumulativeSum()`.

```js
data
    |> aggregateWindow(every: 5m, fn: sum)
    |> cumulativeSum()
```

#### Related

-   [cumulativeSum() function](/flux/v0/stdlib/universe/cumulativesum/)

[query](/influxdb/v2/tags/query/) [cumulative sum](/influxdb/v2/tags/cumulative-sum/)
