docs-v2/content/shared/influxql-v3-reference/functions/transformations.md

2739 lines
80 KiB
Markdown

InfluxQL transformation functions modify and return values in each row of queried data.
- [ABS()](#abs)
- [ACOS()](#acos)
- [ASIN()](#asin)
- [ATAN()](#atan)
- [ATAN2()](#atan2)
- [CEIL()](#ceil)
- [COS()](#cos)
- [CUMULATIVE_SUM()](#cumulative_sum)
- [DERIVATIVE()](#derivative)
- [DIFFERENCE()](#difference)
- [ELAPSED()](#elapsed)
- [EXP()](#exp)
- [FLOOR()](#floor)
- [LN()](#ln)
- [LOG()](#log)
- [LOG2()](#log2)
- [LOG10()](#log10)
- [MOVING_AVERAGE()](#moving_average)
- [NON_NEGATIVE_DERIVATIVE()](#non_negative_derivative)
- [NON_NEGATIVE_DIFFERENCE()](#non_negative_difference)
- [POW()](#pow)
- [ROUND()](#round)
- [SIN()](#sin)
- [SQRT()](#sqrt)
- [TAN()](#tan)
> [!Important]
>
> #### Missing InfluxQL functions
>
> Some InfluxQL functions are in the process of being rearchitected to work with
> the InfluxDB 3 storage engine. If a function you need is not here, check the
> [InfluxQL feature support page](/influxdb/version/reference/influxql/feature-support/#function-support)
> for more information.
## Notable behaviors of transformation functions
#### Must use aggregate or selector functions when grouping by time
Most transformation functions support `GROUP BY` clauses that group by tags,
but do not directly support `GROUP BY` clauses that group by time.
To use transformation functions with with a `GROUP BY time()` clause, apply
an [aggregate](/influxdb/version/reference/influxql/functions/aggregates/)
or [selector](/influxdb/version/reference/influxql/functions/selectors/)
function to the **field_expression** argument.
The transformation operates on the result of the aggregate or selector operation.
---
## ABS()
Returns the absolute value of the field value.
```sql
ABS(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `ABS()` to a field" %}}
```sql
SELECT
a,
ABS(a)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | a | abs |
| :------------------- | -----------------: | ----------------: |
| 2023-01-01T00:00:00Z | 0.33909108671076 | 0.33909108671076 |
| 2023-01-01T00:01:00Z | -0.774984088561186 | 0.774984088561186 |
| 2023-01-01T00:02:00Z | -0.921037167720451 | 0.921037167720451 |
| 2023-01-01T00:03:00Z | -0.73880754843378 | 0.73880754843378 |
| 2023-01-01T00:04:00Z | -0.905980032168252 | 0.905980032168252 |
| 2023-01-01T00:05:00Z | -0.891164752631417 | 0.891164752631417 |
{{% /expand %}}
{{% expand "Apply `ABS()` to each field" %}}
```sql
SELECT ABS(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | abs_a | abs_b |
| :------------------- | ----------------: | -----------------: |
| 2023-01-01T00:00:00Z | 0.33909108671076 | 0.163643058925645 |
| 2023-01-01T00:01:00Z | 0.774984088561186 | 0.137034364053949 |
| 2023-01-01T00:02:00Z | 0.921037167720451 | 0.482943221384294 |
| 2023-01-01T00:03:00Z | 0.73880754843378 | 0.0729732928756677 |
| 2023-01-01T00:04:00Z | 0.905980032168252 | 1.77857552719844 |
| 2023-01-01T00:05:00Z | 0.891164752631417 | 0.741147445214238 |
{{% /expand %}}
{{% expand "Apply `ABS()` to time windows (grouped by time)" %}}
```sql
SELECT
ABS(MEAN(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | abs |
| :------------------- | -------------------: |
| 2023-01-01T00:00:00Z | 0.4345725888930678 |
| 2023-01-01T00:10:00Z | 0.12861008519618367 |
| 2023-01-01T00:20:00Z | 0.030168160597251192 |
| 2023-01-01T00:30:00Z | 0.02928699660831855 |
| 2023-01-01T00:40:00Z | 0.02211434600834538 |
| 2023-01-01T00:50:00Z | 0.15530468657783394 |
{{% /expand %}}
{{< /expand-wrapper >}}
## ACOS()
Returns the arccosine (in radians) of the field value.
Field values must be between -1 and 1.
```sql
ACOS(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `ACOS()` to a field" %}}
```sql
SELECT
a,
ACOS(a)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | a | acos |
| :------------------- | -----------------: | -----------------: |
| 2023-01-01T00:00:00Z | 0.33909108671076 | 1.2248457522250173 |
| 2023-01-01T00:01:00Z | -0.774984088561186 | 2.4574862443115 |
| 2023-01-01T00:02:00Z | -0.921037167720451 | 2.741531473732281 |
| 2023-01-01T00:03:00Z | -0.73880754843378 | 2.4020955294179256 |
| 2023-01-01T00:04:00Z | -0.905980032168252 | 2.7044854502651114 |
| 2023-01-01T00:05:00Z | -0.891164752631417 | 2.6707024029338 |
{{% /expand %}}
{{% expand "Apply `ACOS()` to each field" %}}
```sql
SELECT ACOS(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | acos_a | acos_b |
| :------------------- | -----------------: | -----------------: |
| 2023-01-01T00:00:00Z | 1.2248457522250173 | 1.7351786975993897 |
| 2023-01-01T00:01:00Z | 2.4574862443115 | 1.433329416131427 |
| 2023-01-01T00:02:00Z | 2.741531473732281 | 2.074809114132046 |
| 2023-01-01T00:03:00Z | 2.4020955294179256 | 1.6438345403920092 |
| 2023-01-01T00:04:00Z | 2.7044854502651114 | |
| 2023-01-01T00:05:00Z | 2.6707024029338 | 0.7360183965088304 |
{{% /expand %}}
{{% expand "Apply `ACOS()` to time windows (grouped by time)" %}}
```sql
SELECT
ACOS(MEAN(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | acos |
| :------------------- | -----------------: |
| 2023-01-01T00:00:00Z | 2.0203599837582877 |
| 2023-01-01T00:10:00Z | 1.441829029328407 |
| 2023-01-01T00:20:00Z | 1.5406235882252437 |
| 2023-01-01T00:30:00Z | 1.5415051418561052 |
| 2023-01-01T00:40:00Z | 1.5486801779072885 |
| 2023-01-01T00:50:00Z | 1.41486045205998 |
{{% /expand %}}
{{< /expand-wrapper >}}
## ASIN()
Returns the arcsine (in radians) of the field value.
Field values must be between -1 and 1.
```sql
ASIN(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `ASIN()` to a field" %}}
```sql
SELECT
a,
ASIN(a)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | a | asin |
| :------------------- | -----------------: | ------------------: |
| 2023-01-01T00:00:00Z | 0.33909108671076 | 0.34595057456987915 |
| 2023-01-01T00:01:00Z | -0.774984088561186 | -0.8866899175166036 |
| 2023-01-01T00:02:00Z | -0.921037167720451 | -1.1707351469373848 |
| 2023-01-01T00:03:00Z | -0.73880754843378 | -0.8312992026230288 |
| 2023-01-01T00:04:00Z | -0.905980032168252 | -1.133689123470215 |
| 2023-01-01T00:05:00Z | -0.891164752631417 | -1.0999060761389035 |
{{% /expand %}}
{{% expand "Apply `ASIN()` to each field" %}}
```sql
SELECT ASIN(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | asin_a | asin_b |
| :------------------- | ------------------: | -------------------: |
| 2023-01-01T00:00:00Z | 0.34595057456987915 | -0.1643823708044932 |
| 2023-01-01T00:01:00Z | -0.8866899175166036 | 0.1374669106634696 |
| 2023-01-01T00:02:00Z | -1.1707351469373848 | -0.5040127873371497 |
| 2023-01-01T00:03:00Z | -0.8312992026230288 | -0.07303821359711259 |
| 2023-01-01T00:04:00Z | -1.133689123470215 | |
| 2023-01-01T00:05:00Z | -1.0999060761389035 | 0.8347779302860662 |
{{% /expand %}}
{{% expand "Apply `ASIN()` to time windows (grouped by time)" %}}
```sql
SELECT
ASIN(MEAN(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | asin |
| :------------------- | -------------------: |
| 2023-01-01T00:00:00Z | -0.44956365696339134 |
| 2023-01-01T00:10:00Z | 0.1289672974664895 |
| 2023-01-01T00:20:00Z | 0.030172738569652847 |
| 2023-01-01T00:30:00Z | 0.029291184938791334 |
| 2023-01-01T00:40:00Z | 0.022116148887608062 |
| 2023-01-01T00:50:00Z | 0.15593587473491674 |
{{% /expand %}}
{{< /expand-wrapper >}}
## ATAN()
Returns the arctangent (in radians) of the field value.
```sql
ATAN(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `ATAN()` to a field" %}}
```sql
SELECT
a,
ATAN(a)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | a | atan |
| :------------------- | -----------------: | ------------------: |
| 2023-01-01T00:00:00Z | 0.33909108671076 | 0.32692355076199897 |
| 2023-01-01T00:01:00Z | -0.774984088561186 | -0.659300127490126 |
| 2023-01-01T00:02:00Z | -0.921037167720451 | -0.7443170183837121 |
| 2023-01-01T00:03:00Z | -0.73880754843378 | -0.6362993731936669 |
| 2023-01-01T00:04:00Z | -0.905980032168252 | -0.7361091800814261 |
| 2023-01-01T00:05:00Z | -0.891164752631417 | -0.727912249468035 |
{{% /expand %}}
{{% expand "Apply `ATAN()` to each field" %}}
```sql
SELECT ATAN(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | atan_a | atan_b |
| :------------------- | ------------------: | -------------------: |
| 2023-01-01T00:00:00Z | 0.32692355076199897 | -0.1622053541422186 |
| 2023-01-01T00:01:00Z | -0.659300127490126 | 0.13618613793696105 |
| 2023-01-01T00:02:00Z | -0.7443170183837121 | -0.4499093121666581 |
| 2023-01-01T00:03:00Z | -0.6362993731936669 | -0.07284417510130452 |
| 2023-01-01T00:04:00Z | -0.7361091800814261 | 1.0585985450688151 |
| 2023-01-01T00:05:00Z | -0.727912249468035 | 0.6378113578294793 |
{{% /expand %}}
{{% expand "Apply `ATAN()` to time windows (grouped by time)" %}}
```sql
SELECT
ATAN(MEAN(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | atan |
| :------------------- | -------------------: |
| 2023-01-01T00:00:00Z | -0.4099506966510045 |
| 2023-01-01T00:10:00Z | 0.1279079463727065 |
| 2023-01-01T00:20:00Z | 0.030159013397288013 |
| 2023-01-01T00:30:00Z | 0.02927862748761639 |
| 2023-01-01T00:40:00Z | 0.022110742100818606 |
| 2023-01-01T00:50:00Z | 0.15407382461141705 |
{{% /expand %}}
{{< /expand-wrapper >}}
## ATAN2()
Returns the the arctangent of `y/x` in radians.
```sql
ATAN2(expression_y, expression_x)
```
#### Arguments
- **expression_y**: Expression to identify the `y` numeric value or one or more
fields to operate on.
Can be a number literal, [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
- **expression_x**: Expression to identify the `x` numeric value or one or more
fields to operate on.
Can be a number literal, [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `ATAN2()` to a field divided by another field" %}}
```sql
SELECT ATAN2(a, b) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | atan2 |
| :------------------- | -------------------: |
| 2023-01-01T00:00:00Z | 2.0204217911794937 |
| 2023-01-01T00:01:00Z | -1.395783190047229 |
| 2023-01-01T00:02:00Z | -2.053731408859953 |
| 2023-01-01T00:03:00Z | -1.669248713922653 |
| 2023-01-01T00:04:00Z | -0.47112754043763505 |
| 2023-01-01T00:05:00Z | -0.8770454978291377 |
{{% /expand %}}
{{% expand "Apply `ATAN2()` to each field divided by a numeric value" %}}
```sql
SELECT ATAN2(*, 2) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | atan2_a | atan2_b |
| :------------------- | -------------------: | --------------------: |
| 2023-01-01T00:00:00Z | 0.16794843225523703 | -0.0816396675119722 |
| 2023-01-01T00:01:00Z | -0.36967737169970566 | 0.06841026268126137 |
| 2023-01-01T00:02:00Z | -0.4315666721698651 | -0.2369359777533473 |
| 2023-01-01T00:03:00Z | -0.35385538623378937 | -0.036470468100670846 |
| 2023-01-01T00:04:00Z | -0.4253376417906667 | 0.7268651162204586 |
| 2023-01-01T00:05:00Z | -0.41917415992493756 | 0.35488446257957357 |
{{% /expand %}}
{{% expand "Apply `ATAN2()` to time windows (grouped by time)" %}}
```sql
SELECT
ATAN2(MEAN(a), MEAN(b))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | atan2 |
| :------------------- | -----------------: |
| 2023-01-01T00:00:00Z | -1.278967897411707 |
| 2023-01-01T00:10:00Z | 2.3520553840586773 |
| 2023-01-01T00:20:00Z | 2.226497789888965 |
| 2023-01-01T00:30:00Z | 3.0977773783018656 |
| 2023-01-01T00:40:00Z | 2.9285769547942677 |
| 2023-01-01T00:50:00Z | 0.9505419744107901 |
{{% /expand %}}
{{< /expand-wrapper >}}
## CEIL()
Returns the subsequent value rounded up to the nearest integer.
```sql
CEIL(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `CEIL()` to a field" %}}
```sql
SELECT
b,
CEIL(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | ceil |
| :------------------- | ------------------: | ---: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | -0 |
| 2023-01-01T00:01:00Z | 0.137034364053949 | 1 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | -0 |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | -0 |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 2 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | 1 |
{{% /expand %}}
{{% expand "Apply `CEIL()` to each field" %}}
```sql
SELECT CEIL(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | ceil_a | ceil_b |
| :------------------- | -----: | -----: |
| 2023-01-01T00:00:00Z | 1 | -0 |
| 2023-01-01T00:01:00Z | -0 | 1 |
| 2023-01-01T00:02:00Z | -0 | -0 |
| 2023-01-01T00:03:00Z | -0 | -0 |
| 2023-01-01T00:04:00Z | -0 | 2 |
| 2023-01-01T00:05:00Z | -0 | 1 |
{{% /expand %}}
{{% expand "Apply `CEIL()` to time windows (grouped by time)" %}}
```sql
SELECT
CEIL(MEAN(b))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | ceil |
| :------------------- | ---: |
| 2023-01-01T00:00:00Z | 1 |
| 2023-01-01T00:10:00Z | -0 |
| 2023-01-01T00:20:00Z | -0 |
| 2023-01-01T00:30:00Z | -0 |
| 2023-01-01T00:40:00Z | -0 |
| 2023-01-01T00:50:00Z | 1 |
{{% /expand %}}
{{< /expand-wrapper >}}
## COS()
Returns the cosine of the field value.
```sql
COS(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `COS()` to a field" %}}
```sql
SELECT
b,
COS(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | cos |
| :------------------- | ------------------: | -------------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | 0.9866403278718959 |
| 2023-01-01T00:01:00Z | 0.137034364053949 | 0.9906254752128878 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | 0.8856319645801471 |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | 0.9973386305831397 |
| 2023-01-01T00:04:00Z | 1.77857552719844 | -0.20628737691395405 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | 0.7376943643170851 |
{{% /expand %}}
{{% expand "Apply `COS()` to each field" %}}
```sql
SELECT COS(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | cos_a | cos_b |
| :------------------- | -----------------: | -------------------: |
| 2023-01-01T00:00:00Z | 0.9430573869206459 | 0.9866403278718959 |
| 2023-01-01T00:01:00Z | 0.7144321674550146 | 0.9906254752128878 |
| 2023-01-01T00:02:00Z | 0.6049946586273094 | 0.8856319645801471 |
| 2023-01-01T00:03:00Z | 0.7392720891861374 | 0.9973386305831397 |
| 2023-01-01T00:04:00Z | 0.616914561474936 | -0.20628737691395405 |
| 2023-01-01T00:05:00Z | 0.6285065034701617 | 0.7376943643170851 |
{{% /expand %}}
{{% expand "Apply `COS()` to time windows (grouped by time)" %}}
```sql
SELECT
COS(MEAN(b))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | cos |
| :------------------- | -----------------: |
| 2023-01-01T00:00:00Z | 0.9914907269510592 |
| 2023-01-01T00:10:00Z | 0.9918765457796455 |
| 2023-01-01T00:20:00Z | 0.9997307399250498 |
| 2023-01-01T00:30:00Z | 0.7850670342365872 |
| 2023-01-01T00:40:00Z | 0.9947779847618986 |
| 2023-01-01T00:50:00Z | 0.9938532355205111 |
{{% /expand %}}
{{< /expand-wrapper >}}
## CUMULATIVE_SUM()
Returns the running total of subsequent [field values](/influxdb/version/reference/glossary/#field-value).
```sql
CUMULATIVE_SUM(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, regular expression, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `CUMULATIVE_SUM()` to a field" %}}
```sql
SELECT CUMULATIVE_SUM(b) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | cumulative_sum |
| :------------------- | -------------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 |
| 2023-01-01T00:01:00Z | -0.02660869487169601 |
| 2023-01-01T00:02:00Z | -0.5095519162559901 |
| 2023-01-01T00:03:00Z | -0.5825252091316577 |
| 2023-01-01T00:04:00Z | 1.1960503180667823 |
| 2023-01-01T00:05:00Z | 1.9371977632810204 |
{{% /expand %}}
{{% expand "Apply `CUMULATIVE_SUM()` to each field" %}}
```sql
SELECT CUMULATIVE_SUM(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | cumulative_sum_a | cumulative_sum_b |
| :------------------- | -------------------: | -------------------: |
| 2023-01-01T00:00:00Z | 0.33909108671076 | -0.163643058925645 |
| 2023-01-01T00:01:00Z | -0.43589300185042595 | -0.02660869487169601 |
| 2023-01-01T00:02:00Z | -1.3569301695708769 | -0.5095519162559901 |
| 2023-01-01T00:03:00Z | -2.095737718004657 | -0.5825252091316577 |
| 2023-01-01T00:04:00Z | -3.001717750172909 | 1.1960503180667823 |
| 2023-01-01T00:05:00Z | -3.892882502804326 | 1.9371977632810204 |
{{% /expand %}}
{{% expand "Apply `CUMULATIVE_SUM()` to field keys that match a regular expression" %}}
```sql
SELECT CUMULATIVE_SUM(/[ab]/) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | cumulative_sum_a | cumulative_sum_b |
| :------------------- | -------------------: | -------------------: |
| 2023-01-01T00:00:00Z | 0.33909108671076 | -0.163643058925645 |
| 2023-01-01T00:01:00Z | -0.43589300185042595 | -0.02660869487169601 |
| 2023-01-01T00:02:00Z | -1.3569301695708769 | -0.5095519162559901 |
| 2023-01-01T00:03:00Z | -2.095737718004657 | -0.5825252091316577 |
| 2023-01-01T00:04:00Z | -3.001717750172909 | 1.1960503180667823 |
| 2023-01-01T00:05:00Z | -3.892882502804326 | 1.9371977632810204 |
{{% /expand %}}
{{% expand "Apply `CUMULATIVE_SUM()` to time windows (grouped by time)" %}}
```sql
SELECT
CUMULATIVE_SUM(SUM(b))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | cumulative_sum |
| :------------------- | -------------------: |
| 2023-01-01T00:00:00Z | 1.3054783385851743 |
| 2023-01-01T00:10:00Z | 0.029980276948385454 |
| 2023-01-01T00:20:00Z | -0.20208529969578404 |
| 2023-01-01T00:30:00Z | -6.882005145666267 |
| 2023-01-01T00:40:00Z | -7.904410787756402 |
| 2023-01-01T00:50:00Z | -6.795080184131271 |
{{% /expand %}}
{{< /expand-wrapper >}}
## DERIVATIVE()
Returns the rate of change between subsequent [field values](/influxdb/version/reference/glossary/#field-value)
per `unit`.
```sql
SELECT DERIVATIVE(field_expression[, unit])
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, regular expression, or wildcard (`*`).
Supports numeric field types.
- **unit**: Unit of time to use to calculate the rate of change.
Supports [duration literals](/influxdb/version/reference/influxql/#durations).
_Default is `1s` (per second)_.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Related functions
- [NON_NEGATIVE_DERIVATIVE()](#non_negative_derivative)
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `DERIVATIVE()` to a field to calculate the per second change" %}}
```sql
SELECT DERIVATIVE(b) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | derivative |
| :------------------- | --------------------: |
| 2023-01-01T00:01:00Z | 0.005011290382993233 |
| 2023-01-01T00:02:00Z | -0.01033295975730405 |
| 2023-01-01T00:03:00Z | 0.006832832141810439 |
| 2023-01-01T00:04:00Z | 0.03085914700123513 |
| 2023-01-01T00:05:00Z | -0.017290468033070033 |
| 2023-01-01T00:06:00Z | -0.007557890705063634 |
{{% /expand %}}
{{% expand "Apply `DERIVATIVE()` to a field to calculate the per 5 minute change" %}}
```sql
SELECT DERIVATIVE(b, 5m) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | derivative |
| :------------------- | ------------------: |
| 2023-01-01T00:01:00Z | 1.5033871148979698 |
| 2023-01-01T00:02:00Z | -3.0998879271912148 |
| 2023-01-01T00:03:00Z | 2.0498496425431316 |
| 2023-01-01T00:04:00Z | 9.257744100370537 |
| 2023-01-01T00:05:00Z | -5.187140409921009 |
| 2023-01-01T00:06:00Z | -2.26736721151909 |
{{% /expand %}}
{{% expand "Apply `DERIVATIVE()` to each field" %}}
```sql
SELECT DERIVATIVE(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | derivative_a | derivative_b |
| :------------------- | ---------------------: | --------------------: |
| 2023-01-01T00:01:00Z | -0.018567919587865765 | 0.005011290382993233 |
| 2023-01-01T00:02:00Z | -0.0024342179859877505 | -0.01033295975730405 |
| 2023-01-01T00:03:00Z | 0.0030371603214445152 | 0.006832832141810439 |
| 2023-01-01T00:04:00Z | -0.0027862080622411984 | 0.03085914700123513 |
| 2023-01-01T00:05:00Z | 0.00024692132561391543 | -0.017290468033070033 |
| 2023-01-01T00:06:00Z | 0.016704951104985283 | -0.007557890705063634 |
{{% /expand %}}
{{% expand "Apply `DERIVATIVE()` to field keys that match a regular expression" %}}
```sql
SELECT DERIVATIVE(/[ab]/) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | derivative_a | derivative_b |
| :------------------- | ---------------------: | --------------------: |
| 2023-01-01T00:01:00Z | -0.018567919587865765 | 0.005011290382993233 |
| 2023-01-01T00:02:00Z | -0.0024342179859877505 | -0.01033295975730405 |
| 2023-01-01T00:03:00Z | 0.0030371603214445152 | 0.006832832141810439 |
| 2023-01-01T00:04:00Z | -0.0027862080622411984 | 0.03085914700123513 |
| 2023-01-01T00:05:00Z | 0.00024692132561391543 | -0.017290468033070033 |
| 2023-01-01T00:06:00Z | 0.016704951104985283 | -0.007557890705063634 |
{{% /expand %}}
{{% expand "Apply `DERIVATIVE()` to time windows (grouped by time)" %}}
```sql
SELECT
DERIVATIVE(MEAN(b), 1m)
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | derivative |
| :------------------- | --------------------: |
| 2023-01-01T00:10:00Z | -0.025809764002219633 |
| 2023-01-01T00:20:00Z | 0.010434324849926194 |
| 2023-01-01T00:30:00Z | -0.06447854269326314 |
| 2023-01-01T00:40:00Z | 0.05657514203880348 |
| 2023-01-01T00:50:00Z | 0.021317362457152655 |
{{% /expand %}}
{{< /expand-wrapper >}}
## DIFFERENCE()
Returns the result of subtraction between subsequent [field values](/influxdb/version/reference/glossary/#field-value).
```sql
DIFFERENCE(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, regular expression, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Related functions
- [NON_NEGATIVE_DIFFERENCE()](#non_negative_difference)
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `DIFFERENCE()` to a field" %}}
```sql
SELECT DIFFERENCE(b) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | difference |
| :------------------- | -------------------: |
| 2023-01-01T00:01:00Z | 0.300677422979594 |
| 2023-01-01T00:02:00Z | -0.619977585438243 |
| 2023-01-01T00:03:00Z | 0.40996992850862635 |
| 2023-01-01T00:04:00Z | 1.8515488200741077 |
| 2023-01-01T00:05:00Z | -1.0374280819842019 |
| 2023-01-01T00:06:00Z | -0.45347344230381803 |
{{% /expand %}}
{{% expand "Apply `DIFFERENCE()` to each field" %}}
```sql
SELECT DIFFERENCE(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | difference_a | difference_b |
| :------------------- | -------------------: | -------------------: |
| 2023-01-01T00:01:00Z | -1.114075175271946 | 0.300677422979594 |
| 2023-01-01T00:02:00Z | -0.14605307915926502 | -0.619977585438243 |
| 2023-01-01T00:03:00Z | 0.18222961928667092 | 0.40996992850862635 |
| 2023-01-01T00:04:00Z | -0.1671724837344719 | 1.8515488200741077 |
| 2023-01-01T00:05:00Z | 0.014815279536834924 | -1.0374280819842019 |
| 2023-01-01T00:06:00Z | 1.002297066299117 | -0.45347344230381803 |
{{% /expand %}}
{{% expand "Apply `DIFFERENCE()` to field keys that match a regular expression" %}}
```sql
SELECT DIFFERENCE(/[ab]/) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | difference_a | difference_b |
| :------------------- | -------------------: | -------------------: |
| 2023-01-01T00:01:00Z | -1.114075175271946 | 0.300677422979594 |
| 2023-01-01T00:02:00Z | -0.14605307915926502 | -0.619977585438243 |
| 2023-01-01T00:03:00Z | 0.18222961928667092 | 0.40996992850862635 |
| 2023-01-01T00:04:00Z | -0.1671724837344719 | 1.8515488200741077 |
| 2023-01-01T00:05:00Z | 0.014815279536834924 | -1.0374280819842019 |
| 2023-01-01T00:06:00Z | 1.002297066299117 | -0.45347344230381803 |
{{% /expand %}}
{{% expand "Apply `DIFFERENCE()` to time windows (grouped by time)" %}}
```sql
SELECT
DIFFERENCE(MEAN(b))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | difference |
| :------------------- | ------------------: |
| 2023-01-01T00:10:00Z | -0.2580976400221963 |
| 2023-01-01T00:20:00Z | 0.10434324849926194 |
| 2023-01-01T00:30:00Z | -0.6447854269326314 |
| 2023-01-01T00:40:00Z | 0.5657514203880348 |
| 2023-01-01T00:50:00Z | 0.21317362457152655 |
{{% /expand %}}
{{< /expand-wrapper >}}
## ELAPSED()
Returns the difference between subsequent [field value's](/influxdb/version/reference/glossary/#field-value)
timestamps in a specified `unit` of time.
```sql
ELAPSED(field_expression[, unit ])
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, regular expression, or wildcard (`*`).
Supports all field types.
- **unit**: Unit of time to return the elapsed time in.
Supports [duration literals](/influxdb/version/reference/influxql/#durations).
_Default is `1ns` (nanoseconds)_.
#### Notable behaviors
- If the `unit` is greater than the elapsed time between points, `ELAPSED()`
returns `0`.
- `ELAPSED()` supports the `GROUP BY time()` clause but the query results aren't very useful.
An `ELAPSED()` query with a nested function and a `GROUP BY time()` clause
returns the interval specified in the `GROUP BY time()` clause.
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `ELAPSED()` to a field and return elapsed time in nanoseconds" %}}
```sql
SELECT ELAPSED(b) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | elapsed |
| :------------------- | ----------: |
| 2023-01-01T00:01:00Z | 60000000000 |
| 2023-01-01T00:02:00Z | 60000000000 |
| 2023-01-01T00:03:00Z | 60000000000 |
| 2023-01-01T00:04:00Z | 60000000000 |
| 2023-01-01T00:05:00Z | 60000000000 |
| 2023-01-01T00:06:00Z | 60000000000 |
{{% /expand %}}
{{% expand "Apply `ELAPSED()` to a field and return elapsed time in seconds" %}}
```sql
SELECT ELAPSED(b, 1s) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | elapsed |
| :------------------- | ------: |
| 2023-01-01T00:01:00Z | 60 |
| 2023-01-01T00:02:00Z | 60 |
| 2023-01-01T00:03:00Z | 60 |
| 2023-01-01T00:04:00Z | 60 |
| 2023-01-01T00:05:00Z | 60 |
| 2023-01-01T00:06:00Z | 60 |
{{% /expand %}}
{{% expand "Apply `ELAPSED()` to each field" %}}
```sql
SELECT ELAPSED(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | elapsed_a | elapsed_b |
| :------------------- | ----------: | ----------: |
| 2023-01-01T00:01:00Z | 60000000000 | 60000000000 |
| 2023-01-01T00:02:00Z | 60000000000 | 60000000000 |
| 2023-01-01T00:03:00Z | 60000000000 | 60000000000 |
| 2023-01-01T00:04:00Z | 60000000000 | 60000000000 |
| 2023-01-01T00:05:00Z | 60000000000 | 60000000000 |
| 2023-01-01T00:06:00Z | 60000000000 | 60000000000 |
{{% /expand %}}
{{% expand "Apply `ELAPSED()` to field keys that match a regular expression" %}}
```sql
SELECT ELAPSED(/[ab]/, 1s) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | elapsed_a | elapsed_b |
| :------------------- | --------: | --------: |
| 2023-01-01T00:01:00Z | 60 | 60 |
| 2023-01-01T00:02:00Z | 60 | 60 |
| 2023-01-01T00:03:00Z | 60 | 60 |
| 2023-01-01T00:04:00Z | 60 | 60 |
| 2023-01-01T00:05:00Z | 60 | 60 |
| 2023-01-01T00:06:00Z | 60 | 60 |
{{% /expand %}}
{{< /expand-wrapper >}}
## EXP()
Returns the exponential of the field value.
```sql
EXP(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `EXP()` to a field" %}}
```sql
SELECT
a,
EXP(a)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | a | exp |
| :------------------- | -----------------: | ------------------: |
| 2023-01-01T00:00:00Z | 0.33909108671076 | 1.4036711951820788 |
| 2023-01-01T00:01:00Z | -0.774984088561186 | 0.460711111517308 |
| 2023-01-01T00:02:00Z | -0.921037167720451 | 0.39810592427186076 |
| 2023-01-01T00:03:00Z | -0.73880754843378 | 0.4776831901055915 |
| 2023-01-01T00:04:00Z | -0.905980032168252 | 0.40414561525252984 |
| 2023-01-01T00:05:00Z | -0.891164752631417 | 0.4101777188333968 |
{{% /expand %}}
{{% expand "Apply `EXP()` to each field" %}}
```sql
SELECT EXP(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | exp_a | exp_b |
| :------------------- | ------------------: | -----------------: |
| 2023-01-01T00:00:00Z | 1.4036711951820788 | 0.8490450268435884 |
| 2023-01-01T00:01:00Z | 0.460711111517308 | 1.14686755886191 |
| 2023-01-01T00:02:00Z | 0.39810592427186076 | 0.6169648527893578 |
| 2023-01-01T00:03:00Z | 0.4776831901055915 | 0.929625657322271 |
| 2023-01-01T00:04:00Z | 0.40414561525252984 | 5.921415512753404 |
| 2023-01-01T00:05:00Z | 0.4101777188333968 | 2.09834186598405 |
{{% /expand %}}
{{% expand "Apply `EXP()` to time windows (grouped by time)" %}}
```sql
SELECT
EXP(MEAN(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | exp |
| :------------------- | -----------------: |
| 2023-01-01T00:00:00Z | 0.6475413743155294 |
| 2023-01-01T00:10:00Z | 1.137246608416461 |
| 2023-01-01T00:20:00Z | 1.030627830373793 |
| 2023-01-01T00:30:00Z | 1.029720078241656 |
| 2023-01-01T00:40:00Z | 1.0223606806499268 |
| 2023-01-01T00:50:00Z | 1.1680137850180072 |
{{% /expand %}}
{{< /expand-wrapper >}}
## FLOOR()
Returns the subsequent value rounded down to the nearest integer.
```sql
FLOOR(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `FLOOR()` to a field" %}}
```sql
SELECT
b,
FLOOR(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | floor |
| :------------------- | ------------------: | ----: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | -1 |
| 2023-01-01T00:01:00Z | 0.137034364053949 | 0 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | -1 |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | -1 |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 1 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | 0 |
{{% /expand %}}
{{% expand "Apply `FLOOR()` to each field" %}}
```sql
SELECT FLOOR(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | floor_a | floor_b |
| :------------------- | ------: | ------: |
| 2023-01-01T00:00:00Z | 0 | -1 |
| 2023-01-01T00:01:00Z | -1 | 0 |
| 2023-01-01T00:02:00Z | -1 | -1 |
| 2023-01-01T00:03:00Z | -1 | -1 |
| 2023-01-01T00:04:00Z | -1 | 1 |
| 2023-01-01T00:05:00Z | -1 | 0 |
{{% /expand %}}
{{% expand "Apply `FLOOR()` to time windows (grouped by time)" %}}
```sql
SELECT
FLOOR(SUM(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | floor |
| :------------------- | ----: |
| 2023-01-01T00:00:00Z | -5 |
| 2023-01-01T00:10:00Z | 1 |
| 2023-01-01T00:20:00Z | 0 |
| 2023-01-01T00:30:00Z | 0 |
| 2023-01-01T00:40:00Z | 0 |
| 2023-01-01T00:50:00Z | 1 |
{{% /expand %}}
{{< /expand-wrapper >}}
## LN()
Returns the natural logarithm of the field value.
Field values must be greater than or equal to 0.
```sql
LN(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `LN()` to a field" %}}
```sql
SELECT
b,
LN(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | ln |
| :------------------- | ------------------: | ------------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | |
| 2023-01-01T00:01:00Z | 0.137034364053949 | -1.98752355209665 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 0.5758127783016702 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | -0.2995556920844895 |
{{% /expand %}}
{{% expand "Apply `LN()` to each field" %}}
```sql
SELECT LN(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | ln_a | ln_b |
| :------------------- | ------------------: | ------------------: |
| 2023-01-01T00:00:00Z | -1.0814865153308908 | |
| 2023-01-01T00:01:00Z | | -1.98752355209665 |
| 2023-01-01T00:02:00Z | | |
| 2023-01-01T00:03:00Z | | |
| 2023-01-01T00:04:00Z | | 0.5758127783016702 |
| 2023-01-01T00:05:00Z | | -0.2995556920844895 |
{{% /expand %}}
{{% expand "Apply `LN()` to time windows (grouped by time)" %}}
```sql
SELECT
LN(SUM(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | ln |
| :------------------- | ------------------: |
| 2023-01-01T00:00:00Z | |
| 2023-01-01T00:10:00Z | 0.25161504572793725 |
| 2023-01-01T00:20:00Z | -1.1983831026157092 |
| 2023-01-01T00:30:00Z | -1.2280265702380913 |
| 2023-01-01T00:40:00Z | -1.5089436474159283 |
| 2023-01-01T00:50:00Z | 0.4402187212890264 |
{{% /expand %}}
{{< /expand-wrapper >}}
## LOG()
Returns the logarithm of the field value with base `b`.
Field values must be greater than or equal to 0.
```sql
LOG(field_expression, b)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
- **b**: Logarithm base to use in the operation.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `LOG()` to a field with a base of 3" %}}
```sql
SELECT
b,
LOG(b, 3)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | log |
| :------------------- | ------------------: | ------------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | |
| 2023-01-01T00:01:00Z | 0.137034364053949 | -1.8091219009630797 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 0.5241273780031629 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | -0.2726673414946528 |
{{% /expand %}}
{{% expand "Apply `LOG()` to each field with a base of 5" %}}
```sql
SELECT LOG(*, 5) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | log_a | log_b |
| :------------------- | ------------------: | -------------------: |
| 2023-01-01T00:00:00Z | -0.6719653532302217 | |
| 2023-01-01T00:01:00Z | | -1.2349178161776593 |
| 2023-01-01T00:02:00Z | | |
| 2023-01-01T00:03:00Z | | |
| 2023-01-01T00:04:00Z | | 0.3577725949246566 |
| 2023-01-01T00:05:00Z | | -0.18612441633827553 |
{{% /expand %}}
{{% expand "Apply `LOG()` to time windows (grouped by time)" %}}
```sql
SELECT
LOG(SUM(a), 10)
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | log |
| :------------------- | ------------------: |
| 2023-01-01T00:00:00Z | |
| 2023-01-01T00:10:00Z | 0.10927502592347751 |
| 2023-01-01T00:20:00Z | -0.5204511686721008 |
| 2023-01-01T00:30:00Z | -0.5333251630849791 |
| 2023-01-01T00:40:00Z | -0.6553258995757036 |
| 2023-01-01T00:50:00Z | 0.1911845614863297 |
{{% /expand %}}
{{< /expand-wrapper >}}
## LOG2()
Returns the logarithm of the field value to the base 2.
Field values must be greater than or equal to 0.
```sql
LOG2(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `LOG2()` to a field" %}}
```sql
SELECT
b,
LOG2(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | log2 |
| :------------------- | ------------------: | ------------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | |
| 2023-01-01T00:01:00Z | 0.137034364053949 | -2.8673903722598544 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 0.8307222397363156 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | -0.4321675114403543 |
{{% /expand %}}
{{% expand "Apply `LOG2()` to each field" %}}
```sql
SELECT LOG2(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | log2_a | log2_b |
| :------------------- | -----------------: | ------------------: |
| 2023-01-01T00:00:00Z | -1.560255232456162 | |
| 2023-01-01T00:01:00Z | | -2.8673903722598544 |
| 2023-01-01T00:02:00Z | | |
| 2023-01-01T00:03:00Z | | |
| 2023-01-01T00:04:00Z | | 0.8307222397363156 |
| 2023-01-01T00:05:00Z | | -0.4321675114403543 |
{{% /expand %}}
{{% expand "Apply `LOG2()` to time windows (grouped by time)" %}}
```sql
SELECT
LOG2(SUM(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | log2 |
| :------------------- | ------------------: |
| 2023-01-01T00:00:00Z | |
| 2023-01-01T00:10:00Z | 0.36300377868474476 |
| 2023-01-01T00:20:00Z | -1.7289013592288134 |
| 2023-01-01T00:30:00Z | -1.7716678429623767 |
| 2023-01-01T00:40:00Z | -2.1769455171078644 |
| 2023-01-01T00:50:00Z | 0.6351013661101591 |
{{% /expand %}}
{{< /expand-wrapper >}}
## LOG10()
Returns the logarithm of the field value to the base 10.
Field values must be greater than or equal to 0.
```sql
LOG10(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `LOG10()` to a field" %}}
```sql
SELECT
b,
LOG10(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | log10 |
| :------------------- | ------------------: | ------------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | |
| 2023-01-01T00:01:00Z | 0.137034364053949 | -0.8631705113283253 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 0.25007231222579585 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | -0.1300953840950034 |
{{% /expand %}}
{{% expand "Apply `LOG10()` to each field" %}}
```sql
SELECT LOG10(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | log10_a | log10_b |
| :------------------- | -------------------: | ------------------: |
| 2023-01-01T00:00:00Z | -0.46968362586098245 | |
| 2023-01-01T00:01:00Z | | -0.8631705113283253 |
| 2023-01-01T00:02:00Z | | |
| 2023-01-01T00:03:00Z | | |
| 2023-01-01T00:04:00Z | | 0.25007231222579585 |
| 2023-01-01T00:05:00Z | | -0.1300953840950034 |
{{% /expand %}}
{{% expand "Apply `LOG10()` to time windows (grouped by time)" %}}
```sql
SELECT
LOG10(SUM(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | log10 |
| :------------------- | ------------------: |
| 2023-01-01T00:00:00Z | |
| 2023-01-01T00:10:00Z | 0.10927502592347751 |
| 2023-01-01T00:20:00Z | -0.520451168672101 |
| 2023-01-01T00:30:00Z | -0.5333251630849791 |
| 2023-01-01T00:40:00Z | -0.6553258995757036 |
| 2023-01-01T00:50:00Z | 0.19118456148632973 |
{{% /expand %}}
{{< /expand-wrapper >}}
## MOVING_AVERAGE()
Returns the rolling average across a window of subsequent [field values](/influxdb/version/reference/glossary/#field-value).
```sql
MOVING_AVERAGE(field_expression, N)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, regular expression, or wildcard (`*`).
Supports all field types.
- **N**: Number of field values to use when calculating the moving average.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `MOVING_AVERAGE()` to a field" %}}
```sql
SELECT MOVING_AVERAGE(a, 3) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | moving_average |
| :------------------- | ------------------: |
| 2023-01-01T00:02:00Z | -0.4523100565236256 |
| 2023-01-01T00:03:00Z | -0.8116096015718056 |
| 2023-01-01T00:04:00Z | -0.8552749161074944 |
| 2023-01-01T00:05:00Z | -0.8453174444111498 |
| 2023-01-01T00:06:00Z | -0.5620041570439896 |
| 2023-01-01T00:07:00Z | -0.3569778402485757 |
{{% /expand %}}
{{% expand "Apply `MOVING_AVERAGE()` to each field" %}}
```sql
SELECT MOVING_AVERAGE(*, 3) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | moving_average_a | moving_average_b |
| :------------------- | ------------------: | -------------------: |
| 2023-01-01T00:02:00Z | -0.4523100565236256 | -0.16985063875199669 |
| 2023-01-01T00:03:00Z | -0.8116096015718056 | -0.13962738340200423 |
| 2023-01-01T00:04:00Z | -0.8552749161074944 | 0.40755300431282615 |
| 2023-01-01T00:05:00Z | -0.8453174444111498 | 0.815583226512337 |
| 2023-01-01T00:06:00Z | -0.5620041570439896 | 0.9357989917743662 |
| 2023-01-01T00:07:00Z | -0.3569778402485757 | 0.15985821845558748 |
{{% /expand %}}
{{% expand "Apply `MOVING_AVERAGE()` to field keys that match a regular expression" %}}
```sql
SELECT MOVING_AVERAGE(/[ab]/, 3) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | moving_average_a | moving_average_b |
| :------------------- | ------------------: | -------------------: |
| 2023-01-01T00:02:00Z | -0.4523100565236256 | -0.16985063875199669 |
| 2023-01-01T00:03:00Z | -0.8116096015718056 | -0.13962738340200423 |
| 2023-01-01T00:04:00Z | -0.8552749161074944 | 0.40755300431282615 |
| 2023-01-01T00:05:00Z | -0.8453174444111498 | 0.815583226512337 |
| 2023-01-01T00:06:00Z | -0.5620041570439896 | 0.9357989917743662 |
| 2023-01-01T00:07:00Z | -0.3569778402485757 | 0.15985821845558748 |
{{% /expand %}}
{{% expand "Apply `MOVING_AVERAGE()` to time windows (grouped by time)" %}}
```sql
SELECT
MOVING_AVERAGE(SUM(a), 3)
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | moving_average |
| :------------------- | ------------------: |
| 2023-01-01T00:20:00Z | -0.9193144769987766 |
| 2023-01-01T00:30:00Z | 0.626884141339178 |
| 2023-01-01T00:40:00Z | 0.27189834404638374 |
| 2023-01-01T00:50:00Z | 0.6890200973149928 |
{{% /expand %}}
{{< /expand-wrapper >}}
## NON_NEGATIVE_DERIVATIVE()
Returns only non-negative rate of change between subsequent
[field values](/influxdb/version/reference/glossary/#field-value).
Negative rates of change return _null_.
```sql
NON_NEGATIVE_DERIVATIVE(field_expression[, unit])
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, regular expression, or wildcard (`*`).
Supports numeric field types.
- **unit**: Unit of time to use to calculate the rate of change.
Supports [duration literals](/influxdb/version/reference/influxql/#durations).
_Default is `1s` (per second)_.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Related functions
- [DERIVATIVE()](#derivative)
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `NON_NEGATIVE_DERIVATIVE()` to a field to calculate the per second change" %}}
```sql
SELECT NON_NEGATIVE_DERIVATIVE(b) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | non_negative_derivative |
| :------------------- | ----------------------: |
| 2023-01-01T00:01:00Z | 0.005011290382993233 |
| 2023-01-01T00:03:00Z | 0.006832832141810439 |
| 2023-01-01T00:04:00Z | 0.03085914700123513 |
| 2023-01-01T00:08:00Z | 0.0227877053636946 |
| 2023-01-01T00:10:00Z | 0.001676063810538834 |
| 2023-01-01T00:11:00Z | 0.014999637478226817 |
{{% /expand %}}
{{% expand "Apply `NON_NEGATIVE_DERIVATIVE()` to a field to calculate the per 5 minute change" %}}
```sql
SELECT NON_NEGATIVE_DERIVATIVE(b, 5m) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | non_negative_derivative |
| :------------------- | ----------------------: |
| 2023-01-01T00:01:00Z | 1.5033871148979698 |
| 2023-01-01T00:03:00Z | 2.0498496425431316 |
| 2023-01-01T00:04:00Z | 9.257744100370537 |
| 2023-01-01T00:08:00Z | 6.836311609108379 |
| 2023-01-01T00:10:00Z | 0.5028191431616502 |
| 2023-01-01T00:11:00Z | 4.499891243468045 |
{{% /expand %}}
{{% expand "Apply `NON_NEGATIVE_DERIVATIVE()` to each field" %}}
```sql
SELECT NON_NEGATIVE_DERIVATIVE(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | non_negative_derivative_a | non_negative_derivative_b |
| :------------------- | ------------------------: | ------------------------: |
| 2023-01-01T00:01:00Z | | 0.005011290382993233 |
| 2023-01-01T00:03:00Z | 0.0030371603214445152 | 0.006832832141810439 |
| 2023-01-01T00:04:00Z | | 0.03085914700123513 |
| 2023-01-01T00:05:00Z | 0.00024692132561391543 | |
| 2023-01-01T00:06:00Z | 0.016704951104985283 | |
| 2023-01-01T00:08:00Z | | 0.0227877053636946 |
| 2023-01-01T00:09:00Z | 0.018437240876186967 | |
| 2023-01-01T00:10:00Z | | 0.001676063810538834 |
| 2023-01-01T00:11:00Z | | 0.014999637478226817 |
| 2023-01-01T00:13:00Z | 0.006694752202850366 | |
| 2023-01-01T00:14:00Z | 0.011836797386191167 | |
{{% /expand %}}
{{% expand "Apply `NON_NEGATIVE_DERIVATIVE()` to field keys that match a regular expression" %}}
```sql
SELECT NON_NEGATIVE_DERIVATIVE(/[ab]/) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | non_negative_derivative_a | non_negative_derivative_b |
| :------------------- | ------------------------: | ------------------------: |
| 2023-01-01T00:01:00Z | | 0.005011290382993233 |
| 2023-01-01T00:03:00Z | 0.0030371603214445152 | 0.006832832141810439 |
| 2023-01-01T00:04:00Z | | 0.03085914700123513 |
| 2023-01-01T00:05:00Z | 0.00024692132561391543 | |
| 2023-01-01T00:06:00Z | 0.016704951104985283 | |
| 2023-01-01T00:08:00Z | | 0.0227877053636946 |
| 2023-01-01T00:09:00Z | 0.018437240876186967 | |
| 2023-01-01T00:10:00Z | | 0.001676063810538834 |
| 2023-01-01T00:11:00Z | | 0.014999637478226817 |
| 2023-01-01T00:13:00Z | 0.006694752202850366 | |
| 2023-01-01T00:14:00Z | 0.011836797386191167 | |
{{% /expand %}}
{{% expand "Apply `NON_NEGATIVE_DERIVATIVE()` to time windows (grouped by time)" %}}
```sql
SELECT
NON_NEGATIVE_DERIVATIVE(MEAN(b), 1m)
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | non_negative_derivative |
| :------------------- | ----------------------: |
| 2023-01-01T00:20:00Z | 0.010434324849926194 |
| 2023-01-01T00:40:00Z | 0.05657514203880348 |
| 2023-01-01T00:50:00Z | 0.021317362457152655 |
{{% /expand %}}
{{< /expand-wrapper >}}
## NON_NEGATIVE_DIFFERENCE()
Returns only non-negative result of subtraction between subsequent
[field values](/influxdb/version/reference/glossary/#field-value).
Negative differences return _null_.
```sql
NON_NEGATIVE_DIFFERENCE(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, regular expression, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Related functions
- [DIFFERENCE()](#difference)
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `NON_NEGATIVE_DIFFERENCE()` to a field" %}}
```sql
SELECT NON_NEGATIVE_DIFFERENCE(b) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | non_negative_difference |
| :------------------- | ----------------------: |
| 2023-01-01T00:01:00Z | 0.300677422979594 |
| 2023-01-01T00:03:00Z | 0.40996992850862635 |
| 2023-01-01T00:04:00Z | 1.8515488200741077 |
| 2023-01-01T00:08:00Z | 1.367262321821676 |
| 2023-01-01T00:10:00Z | 0.10056382863233004 |
| 2023-01-01T00:11:00Z | 0.899978248693609 |
{{% /expand %}}
{{% expand "Apply `NON_NEGATIVE_DIFFERENCE()` to each field" %}}
```sql
SELECT NON_NEGATIVE_DIFFERENCE(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | non_negative_difference_a | non_negative_difference_b |
| :------------------- | ------------------------: | ------------------------: |
| 2023-01-01T00:01:00Z | | 0.300677422979594 |
| 2023-01-01T00:03:00Z | 0.18222961928667092 | 0.40996992850862635 |
| 2023-01-01T00:04:00Z | | 1.8515488200741077 |
| 2023-01-01T00:05:00Z | 0.014815279536834924 | |
| 2023-01-01T00:06:00Z | 1.002297066299117 | |
| 2023-01-01T00:08:00Z | | 1.367262321821676 |
| 2023-01-01T00:09:00Z | 1.106234452571218 | |
| 2023-01-01T00:10:00Z | | 0.10056382863233004 |
| 2023-01-01T00:11:00Z | | 0.899978248693609 |
| 2023-01-01T00:13:00Z | 0.401685132171022 | |
| 2023-01-01T00:14:00Z | 0.71020784317147 | |
{{% /expand %}}
{{% expand "Apply `NON_NEGATIVE_DIFFERENCE()` to field keys that match a regular expression" %}}
```sql
SELECT NON_NEGATIVE_DIFFERENCE(/[ab]/) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | non_negative_difference_a | non_negative_difference_b |
| :------------------- | ------------------------: | ------------------------: |
| 2023-01-01T00:01:00Z | | 0.300677422979594 |
| 2023-01-01T00:03:00Z | 0.18222961928667092 | 0.40996992850862635 |
| 2023-01-01T00:04:00Z | | 1.8515488200741077 |
| 2023-01-01T00:05:00Z | 0.014815279536834924 | |
| 2023-01-01T00:06:00Z | 1.002297066299117 | |
| 2023-01-01T00:08:00Z | | 1.367262321821676 |
| 2023-01-01T00:09:00Z | 1.106234452571218 | |
| 2023-01-01T00:10:00Z | | 0.10056382863233004 |
| 2023-01-01T00:11:00Z | | 0.899978248693609 |
| 2023-01-01T00:13:00Z | 0.401685132171022 | |
| 2023-01-01T00:14:00Z | 0.71020784317147 | |
{{% /expand %}}
{{% expand "Apply `NON_NEGATIVE_DIFFERENCE()` to time windows (grouped by time)" %}}
```sql
SELECT
NON_NEGATIVE_DIFFERENCE(MEAN(b))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | non_negative_difference |
| :------------------- | ----------------------: |
| 2023-01-01T00:20:00Z | 0.10434324849926194 |
| 2023-01-01T00:40:00Z | 0.5657514203880348 |
| 2023-01-01T00:50:00Z | 0.21317362457152655 |
{{% /expand %}}
{{< /expand-wrapper >}}
## POW()
Returns the field value to the power of `x`.
```sql
POW(field_expression, x)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
- **x**: Power to raise to.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `POW()` to a field with a power of 3" %}}
```sql
SELECT
b,
POW(b, 3)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | pow |
| :------------------- | ------------------: | ---------------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | -0.004382205777325515 |
| 2023-01-01T00:01:00Z | 0.137034364053949 | 0.002573288422171338 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | -0.1126388541916811 |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | -0.0003885901893904874 |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 5.626222933751733 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | 0.4071119474284653 |
{{% /expand %}}
{{% expand "Apply `POW()` to each field with a power of 5" %}}
```sql
SELECT POW(*, 5) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | pow_a | pow_b |
| :------------------- | -------------------: | -----------------------: |
| 2023-01-01T00:00:00Z | 0.004483135555212479 | -0.00011735131084020357 |
| 2023-01-01T00:01:00Z | -0.2795528536239978 | 0.000048322282876973225 |
| 2023-01-01T00:02:00Z | -0.6628050073932118 | -0.026271227986693114 |
| 2023-01-01T00:03:00Z | -0.22011853819169455 | -0.000002069282189962477 |
| 2023-01-01T00:04:00Z | -0.6103699296012646 | 17.797604890097084 |
| 2023-01-01T00:05:00Z | -0.5620694808926487 | 0.22362640363833164 |
{{% /expand %}}
{{% expand "Apply `POW()` to time windows (grouped by time)" %}}
```sql
SELECT
POW(SUM(a), 10)
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | pow |
| :------------------- | -----------------------: |
| 2023-01-01T00:00:00Z | 2402278.159218532 |
| 2023-01-01T00:10:00Z | 12.380844221267186 |
| 2023-01-01T00:20:00Z | 0.000006244365466732681 |
| 2023-01-01T00:30:00Z | 0.0000046424621235691315 |
| 2023-01-01T00:40:00Z | 2.7973126174031977e-7 |
| 2023-01-01T00:50:00Z | 81.6292140233699 |
{{% /expand %}}
{{< /expand-wrapper >}}
## ROUND()
Returns a field value rounded to the nearest integer.
```sql
ROUND(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `ROUND()` to a field" %}}
```sql
SELECT
b,
ROUND(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | round |
| :------------------- | ------------------: | ----: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | -0 |
| 2023-01-01T00:01:00Z | 0.137034364053949 | 0 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | -0 |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | -0 |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 2 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | 1 |
{{% /expand %}}
{{% expand "Apply `ROUND()` to each field" %}}
```sql
SELECT ROUND(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | round_a | round_b |
| :------------------- | ------: | ------: |
| 2023-01-01T00:00:00Z | 0 | -0 |
| 2023-01-01T00:01:00Z | -1 | 0 |
| 2023-01-01T00:02:00Z | -1 | -0 |
| 2023-01-01T00:03:00Z | -1 | -0 |
| 2023-01-01T00:04:00Z | -1 | 2 |
| 2023-01-01T00:05:00Z | -1 | 1 |
{{% /expand %}}
{{% expand "Apply `ROUND()` to time windows (grouped by time)" %}}
```sql
SELECT
ROUND(SUM(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | round |
| :------------------- | ----: |
| 2023-01-01T00:00:00Z | -4 |
| 2023-01-01T00:10:00Z | 1 |
| 2023-01-01T00:20:00Z | 0 |
| 2023-01-01T00:30:00Z | 0 |
| 2023-01-01T00:40:00Z | 0 |
| 2023-01-01T00:50:00Z | 2 |
{{% /expand %}}
{{< /expand-wrapper >}}
## SIN()
Returns the sine of a field value.
```sql
SIN(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `SIN()` to a field" %}}
```sql
SELECT
b,
SIN(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | sin |
| :------------------- | ------------------: | ------------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | -0.1629136686003898 |
| 2023-01-01T00:01:00Z | 0.137034364053949 | 0.13660588515594851 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | -0.4643877941052164 |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | -0.0729085450859347 |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 0.9784914502058565 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | 0.6751348197618099 |
{{% /expand %}}
{{% expand "Apply `SIN()` to each field" %}}
```sql
SELECT SIN(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | sin_a | sin_b |
| :------------------- | ------------------: | ------------------: |
| 2023-01-01T00:00:00Z | 0.3326300722640741 | -0.1629136686003898 |
| 2023-01-01T00:01:00Z | -0.6997047077914582 | 0.13660588515594851 |
| 2023-01-01T00:02:00Z | -0.7962295291135749 | -0.4643877941052164 |
| 2023-01-01T00:03:00Z | -0.673406844448706 | -0.0729085450859347 |
| 2023-01-01T00:04:00Z | -0.7870301289278495 | 0.9784914502058565 |
| 2023-01-01T00:05:00Z | -0.7778043295686337 | 0.6751348197618099 |
{{% /expand %}}
{{% expand "Apply `SIN()` to time windows (grouped by time)" %}}
```sql
SELECT
SIN(SUM(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | sin |
| :------------------- | ------------------: |
| 2023-01-01T00:00:00Z | 0.933528830283535 |
| 2023-01-01T00:10:00Z | 0.9597472276784815 |
| 2023-01-01T00:20:00Z | 0.29712628761434723 |
| 2023-01-01T00:30:00Z | 0.2887011711003489 |
| 2023-01-01T00:40:00Z | 0.21934537994884437 |
| 2023-01-01T00:50:00Z | 0.9998424824522808 |
{{% /expand %}}
{{< /expand-wrapper >}}
## SQRT()
Returns the square root of a field value.
Field values must be greater than or equal to 0.
Negative field values return null.
```sql
SQRT(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `SQRT()` to a field" %}}
```sql
SELECT
b,
SQRT(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | sqrt |
| :------------------- | ------------------: | -----------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | |
| 2023-01-01T00:01:00Z | 0.137034364053949 | 0.370181528515334 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | |
| 2023-01-01T00:04:00Z | 1.77857552719844 | 1.3336324558132349 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | 0.860899207349059 |
{{% /expand %}}
{{% expand "Apply `SQRT()` to each field" %}}
```sql
SELECT SQRT(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | sqrt_a | sqrt_b |
| :------------------- | -----------------: | -----------------: |
| 2023-01-01T00:00:00Z | 0.5823152811928947 | |
| 2023-01-01T00:01:00Z | | 0.370181528515334 |
| 2023-01-01T00:02:00Z | | |
| 2023-01-01T00:03:00Z | | |
| 2023-01-01T00:04:00Z | | 1.3336324558132349 |
| 2023-01-01T00:05:00Z | | 0.860899207349059 |
{{% /expand %}}
{{% expand "Apply `SQRT()` to time windows (grouped by time)" %}}
```sql
SELECT
SQRT(SUM(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | sqrt |
| :------------------- | -----------------: |
| 2023-01-01T00:00:00Z | |
| 2023-01-01T00:10:00Z | 1.134063865909604 |
| 2023-01-01T00:20:00Z | 0.5492555015405052 |
| 2023-01-01T00:30:00Z | 0.5411746169982342 |
| 2023-01-01T00:40:00Z | 0.4702589287652642 |
| 2023-01-01T00:50:00Z | 1.2462130097934059 |
{{% /expand %}}
{{< /expand-wrapper >}}
## TAN()
Returns the tangent of the field value.
```sql
TAN(field_expression)
```
#### Arguments
- **field_expression**: Expression to identify one or more fields to operate on.
Can be a [field key](/influxdb/version/reference/glossary/#field-key),
constant, or wildcard (`*`).
Supports numeric field types.
#### Notable behaviors
- [Must use aggregate or selector functions when grouping by time](#must-use-aggregate-or-selector-functions-when-grouping-by-time).
#### Examples
The following examples use the
[Random numbers sample data](/influxdb/version/reference/sample-data/#random-numbers-sample-data).
{{< expand-wrapper >}}
{{% expand "Apply `TAN()` to a field" %}}
```sql
SELECT
b,
TAN(b)
FROM numbers
LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | b | tan |
| :------------------- | ------------------: | -------------------: |
| 2023-01-01T00:00:00Z | -0.163643058925645 | -0.16511961248511045 |
| 2023-01-01T00:01:00Z | 0.137034364053949 | 0.13789861917955581 |
| 2023-01-01T00:02:00Z | -0.482943221384294 | -0.5243575352718546 |
| 2023-01-01T00:03:00Z | -0.0729732928756677 | -0.07310309943905952 |
| 2023-01-01T00:04:00Z | 1.77857552719844 | -4.743341375725582 |
| 2023-01-01T00:05:00Z | 0.741147445214238 | 0.9151958486043346 |
{{% /expand %}}
{{% expand "Apply `TAN()` to each field" %}}
```sql
SELECT TAN(*) FROM numbers LIMIT 6
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | tan_a | tan_b |
| :------------------- | ------------------: | -------------------: |
| 2023-01-01T00:00:00Z | 0.3527145610408791 | -0.16511961248511045 |
| 2023-01-01T00:01:00Z | -0.9793857830953787 | 0.13789861917955581 |
| 2023-01-01T00:02:00Z | -1.3160934857179802 | -0.5243575352718546 |
| 2023-01-01T00:03:00Z | -0.9109052733075013 | -0.07310309943905952 |
| 2023-01-01T00:04:00Z | -1.2757522322802637 | -4.743341375725582 |
| 2023-01-01T00:05:00Z | -1.2375438046768912 | 0.9151958486043346 |
{{% /expand %}}
{{% expand "Apply `TAN()` to time windows (grouped by time)" %}}
```sql
SELECT
TAN(SUM(a))
FROM numbers
WHERE
time >= '2023-01-01T00:00:00Z'
AND time < '2023-01-01T01:00:00Z'
GROUP BY time(10m)
```
{{% influxql/table-meta %}}
name: numbers
{{% /influxql/table-meta %}}
| time | tan |
| :------------------- | ------------------: |
| 2023-01-01T00:00:00Z | -2.603968631156288 |
| 2023-01-01T00:10:00Z | 3.4171098358131733 |
| 2023-01-01T00:20:00Z | 0.31117972731464494 |
| 2023-01-01T00:30:00Z | 0.30154101138968664 |
| 2023-01-01T00:40:00Z | 0.22482036866737865 |
| 2023-01-01T00:50:00Z | 56.3338223288096 |
{{% /expand %}}
{{< /expand-wrapper >}}