--- title: Query cumulative sum seotitle: Query cumulative sum in Flux list_title: Cumulative sum description: > Use the `cumulativeSum()` function to calculate a running total of values. weight: 210 menu: v2_0: parent: Query with Flux name: Cumulative sum v2.0/tags: [query, cumulative sum] related: - /v2.0/reference/flux/stdlib/built-in/transformations/cumulativesum/ list_query_example: cumulative_sum --- Use the [`cumulativeSum()` function](/v2.0/reference/flux/stdlib/built-in/transformations/cumulativesum/) to calculate a running total of values. `cumulativeSum` sums the values of subsequent records and returns each row updated with the summed total. {{< flex >}} {{% flex-content "half" %}} **Given the following input table:** | _time | _value | | ----- |:------:| | 0001 | 1 | | 0002 | 2 | | 0003 | 1 | | 0004 | 3 | {{% /flex-content %}} {{% flex-content "half" %}} **`cumulativeSum()` returns:** | _time | _value | | ----- |:------:| | 0001 | 1 | | 0002 | 3 | | 0003 | 4 | | 0004 | 7 | {{% /flex-content %}} {{< /flex >}} {{% note %}} The examples below use the [example data variable](/v2.0/query-data/flux/#example-data-variable). {{% /note %}} ##### Calculate the running total of values ```js data |> cumulativeSum() ``` ## Use cumulativeSum() with aggregateWindow() [`aggregateWindow()`](/v2.0/reference/flux/stdlib/built-in/transformations/aggregates/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](/v2.0/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() ```