# difference() function

The difference() function computes the difference between subsequent records.
The user-specified columns of numeric type are subtracted while others are kept intact.

Output data type: Float

difference(
nonNegative: false,
columns: ["_value"],
keepFirst: false,
initialZero: false,
)

## Parameters

### nonNegative

Indicates if the difference is allowed to be negative. When set to true, if a value is less than the previous value, the function assumes the previous value should have been a zero. Default is false.

### columns

The columns to use to compute the difference. Default is ["_value"].

### keepFirst

Indicates the first row should be kept. If true, the difference will be null. Default is false.

### initialZero

Use zero (0) as the initial value in the difference calculation when the subsequent value is less than the previous value and nonNegative is true. Default is false.

### tables

Input data. Default is piped-forward data (<-).

## Subtraction rules for numeric types

• The difference between two non-null values is their algebraic difference; or null, if the result is negative and nonNegative: true;
• null minus some value is always null;
• Some value v minus null is v minus the last non-null value seen before v; or null if v is the first non-null value seen.
• If nonNegative and initialZero are set to true, difference() returns the difference between 0 and the subsequent value. If the subsequent value is less than zero, difference() returns null.

## Output tables

For each input table with n rows, difference() outputs a table with n - 1 rows.

## Examples

The following examples use data provided by the sampledata package to show how difference() transforms data.

#### Calculate the difference between subsequent values

import "sampledata"

data = sampledata.int()

data
|> difference()

View input and output

#### Calculate the non-negative difference between subsequent values

import "sampledata"

data = sampledata.int()

data
|> difference(nonNegative: true):

View input and output

#### Calculate the difference between subsequent values with null values

import "sampledata"

data = sampledata.int(includeNull: true)

data
|> difference()

View input and output

#### Keep the first value when calculating the difference between values

import "sampledata"

sampledata.int()
|> difference(keepFirst: true)

View input and output

### Upgrade to InfluxDB Cloud or InfluxDB 2.0!

InfluxDB Cloud and InfluxDB OSS 2.0 ready for production.