733 lines
16 KiB
Markdown
733 lines
16 KiB
Markdown
---
|
|
title: SQL math functions
|
|
list_title: Math functions
|
|
description: >
|
|
Use math functions to perform mathematical operations in SQL queries.
|
|
menu:
|
|
influxdb_cloud_serverless:
|
|
name: Math
|
|
parent: sql-functions
|
|
weight: 306
|
|
---
|
|
|
|
The InfluxDB SQL implementation supports the following math functions for
|
|
performing mathematic operations:
|
|
|
|
- [abs](#abs)
|
|
- [acos](#acos)
|
|
- [asin](#asin)
|
|
- [atan](#atan)
|
|
- [atan2](#atan2)
|
|
- [ceil](#ceil)
|
|
- [cos](#cos)
|
|
- [exp](#exp)
|
|
- [floor](#floor)
|
|
- [ln](#ln)
|
|
- [log](#log)
|
|
- [log10](#log10)
|
|
- [log2](#log2)
|
|
- [power](#power)
|
|
- [pow](#pow)
|
|
- [random](#random)
|
|
- [round](#round)
|
|
- [signum](#signum)
|
|
- [sin](#sin)
|
|
- [sqrt](#sqrt)
|
|
- [tan](#tan)
|
|
- [trunc](#trunc)
|
|
|
|
## abs
|
|
|
|
Returns the absolute value of a number.
|
|
|
|
```sql
|
|
abs(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `abs` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT abs(temp) AS abs FROM home LIMIT 3
|
|
```
|
|
|
|
| abs |
|
|
| ---: |
|
|
| 21 |
|
|
| 23 |
|
|
| 22.7 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## acos
|
|
|
|
Returns the arc cosine or inverse cosine of a number.
|
|
|
|
```sql
|
|
acos(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `acos` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT acos(temp * .01) AS acos FROM home LIMIT 3
|
|
```
|
|
|
|
| acos |
|
|
| -----------------: |
|
|
| 1.359221367036801 |
|
|
| 1.3387186439321834 |
|
|
| 1.3418001704498232 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## asin
|
|
|
|
Returns the arc sine or inverse sine of a number.
|
|
|
|
```sql
|
|
asin(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `asin` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT asin(temp * .01) AS asin FROM home LIMIT 3
|
|
```
|
|
|
|
| asin |
|
|
| ------------------: |
|
|
| 0.2115749597580956 |
|
|
| 0.23207768286271319 |
|
|
| 0.22899615634507337 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## atan
|
|
|
|
Returns the arc tangent or inverse tangent of a number.
|
|
|
|
```sql
|
|
atan(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `atan` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT atan(temp * .01) AS atan FROM home LIMIT 3
|
|
```
|
|
|
|
| atan |
|
|
| ------------------: |
|
|
| 0.206992194219821 |
|
|
| 0.22606838799388393 |
|
|
| 0.22321725383717603 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## atan2
|
|
|
|
Returns the arc tangent or inverse tangent of `expression_y / expression_x`.
|
|
|
|
```sql
|
|
atan2(expression_y, expression_x)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **expression_y**: First numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
- **expression_x**: Second numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `atan2` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT atan2(temp, hum) AS atan2 FROM home LIMIT 3
|
|
```
|
|
|
|
| atan2 |
|
|
| -----------------: |
|
|
| 0.5292859396993504 |
|
|
| 0.5660139100632452 |
|
|
| 0.5613335864315844 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## ceil
|
|
|
|
Returns the nearest integer greater than or equal to a number.
|
|
|
|
```sql
|
|
ceil(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `ceil` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT ceil(temp) AS ceil FROM home LIMIT 3
|
|
```
|
|
|
|
| ceil |
|
|
| ---: |
|
|
| 21 |
|
|
| 23 |
|
|
| 23 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## cos
|
|
|
|
Returns the cosine of a number.
|
|
|
|
```sql
|
|
cos(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `cos` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT cos(temp) AS cos FROM home LIMIT 3
|
|
```
|
|
|
|
| cos |
|
|
| ------------------: |
|
|
| -0.5477292602242684 |
|
|
| -0.5328330203333975 |
|
|
| -0.7591100556583898 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## exp
|
|
|
|
Returns the base-e exponential of a number.
|
|
|
|
```sql
|
|
exp(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to use as the exponent.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `exp` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT exp(temp) AS exp FROM home LIMIT 3
|
|
```
|
|
|
|
| exp |
|
|
| -----------------: |
|
|
| 1318815734.4832146 |
|
|
| 9744803446.248903 |
|
|
| 7219127949.943179 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## floor
|
|
|
|
Returns the nearest integer less than or equal to a number.
|
|
|
|
```sql
|
|
floor(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `floor` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT floor(temp) AS floor FROM home LIMIT 3
|
|
```
|
|
|
|
| floor |
|
|
| ----: |
|
|
| 21 |
|
|
| 23 |
|
|
| 22 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## ln
|
|
|
|
Returns the natural logarithm of a number.
|
|
|
|
```sql
|
|
ln(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `ln` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT ln(temp) AS ln FROM home LIMIT 3
|
|
```
|
|
|
|
| ln |
|
|
| -----------------: |
|
|
| 3.044522437723423 |
|
|
| 3.1354942159291497 |
|
|
| 3.122364924487357 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## log
|
|
|
|
Returns the base-x logarithm of a number.
|
|
|
|
```
|
|
log([base, ]numeric_expression)
|
|
```
|
|
|
|
#### Arguments
|
|
|
|
- **base**: Base numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
Default is `10`.
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `log` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in the
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT
|
|
temp,
|
|
log(2, temp) AS temp_log2,
|
|
log(4, temp) AS temp_log4,
|
|
log(temp) AS temp_log10
|
|
FROM home
|
|
LIMIT 3
|
|
```
|
|
|
|
| temp | temp_log2 | temp_log4 | temp_log10 |
|
|
| :--- | ----------------: | -----------------: | -----------------: |
|
|
| 21 | 4.392317422778761 | 2.1961587113893803 | 1.322219294733919 |
|
|
| 23 | 4.523561956057013 | 2.2617809780285065 | 1.3617278360175928 |
|
|
| 22.7 | 4.504620392403553 | 2.2523101962017766 | 1.3560258571931225 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## log10
|
|
|
|
Returns the base-10 logarithm of a number.
|
|
|
|
```sql
|
|
log10(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `log10` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT log10(temp) AS log10 FROM home LIMIT 3
|
|
```
|
|
|
|
| log10 |
|
|
| -----------------: |
|
|
| 1.3222192947339193 |
|
|
| 1.3617278360175928 |
|
|
| 1.3560258571931227 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## log2
|
|
|
|
Returns the base-2 logarithm of a number.
|
|
|
|
```sql
|
|
log2(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `log2` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT log2(temp) AS log2 FROM home LIMIT 3
|
|
```
|
|
|
|
| log2 |
|
|
| ----------------: |
|
|
| 4.392317422778761 |
|
|
| 4.523561956057013 |
|
|
| 4.504620392403552 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## power
|
|
|
|
Returns a base expression raised to the power of an exponent.
|
|
|
|
```sql
|
|
power(base, exponent)
|
|
```
|
|
|
|
##### Aliases
|
|
|
|
- `pow`
|
|
|
|
##### Arguments
|
|
|
|
- **base**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
- **exponent**: Exponent numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `power` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT power(temp, hum * .1) AS power FROM home LIMIT 3
|
|
```
|
|
|
|
| power |
|
|
| -----------------: |
|
|
| 55817.099910217476 |
|
|
| 85007.01501569824 |
|
|
| 78569.38332452129 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## `pow`
|
|
|
|
_Alias of [power](#power)._
|
|
|
|
## random
|
|
|
|
Returns a random float value between 0 and 1.
|
|
The random seed is unique to each row.
|
|
|
|
```sql
|
|
random()
|
|
```
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `random` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT temp * random() AS random FROM home LIMIT 3
|
|
```
|
|
|
|
{{% note %}}
|
|
Due to the nature of the function, your results will not match the results below.
|
|
{{% /note %}}
|
|
|
|
| random |
|
|
| -----------------: |
|
|
| 0.5030770374815072 |
|
|
| 12.938847036567514 |
|
|
| 2.8204596545385385 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## round
|
|
|
|
Rounds a number to the nearest integer.
|
|
|
|
```sql
|
|
round(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `round` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT round(temp) AS round FROM home LIMIT 3
|
|
```
|
|
|
|
| round |
|
|
| ----: |
|
|
| 21 |
|
|
| 23 |
|
|
| 23 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## signum
|
|
|
|
Returns the sign of a number.
|
|
Negative numbers return `-1`.
|
|
Zero and positive numbers return `1`.
|
|
|
|
```sql
|
|
signum(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `signum` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT signum(temp - 23) AS signum FROM home LIMIT 3
|
|
```
|
|
|
|
| signum |
|
|
| -----: |
|
|
| -1 |
|
|
| 1 |
|
|
| -1 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## sin
|
|
|
|
Returns the sine of a number.
|
|
|
|
```sql
|
|
sin(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `sin` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT sin(temp) AS sin FROM home LIMIT 3
|
|
```
|
|
|
|
| sin |
|
|
| ------------------: |
|
|
| 0.8366556385360561 |
|
|
| -0.8462204041751706 |
|
|
| -0.6509623056662469 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## sqrt
|
|
|
|
Returns the square root of a number.
|
|
|
|
```sql
|
|
sqrt(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `sqrt` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT sqrt(temp) AS sqrt FROM home LIMIT 3
|
|
```
|
|
|
|
| sqrt |
|
|
| ----------------: |
|
|
| 4.58257569495584 |
|
|
| 4.795831523312719 |
|
|
| 4.764451699828638 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## tan
|
|
|
|
Returns the tangent of a number.
|
|
|
|
```sql
|
|
tan(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `tan` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT tan(temp) AS tan FROM home LIMIT 3
|
|
```
|
|
|
|
| tan |
|
|
| ------------------: |
|
|
| -1.5274985276366035 |
|
|
| 1.5881530833912738 |
|
|
| 0.8575335036257101 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|
|
|
|
## trunc
|
|
|
|
Truncates a number toward zero (at the decimal point).
|
|
|
|
```sql
|
|
trunc(numeric_expression)
|
|
```
|
|
|
|
##### Arguments
|
|
|
|
- **numeric_expression**: Numeric expression to operate on.
|
|
Can be a constant, column, or function, and any combination of arithmetic operators.
|
|
|
|
{{< expand-wrapper >}}
|
|
{{% expand "View `trunc` query example" %}}
|
|
|
|
_The following example uses the sample data set provided in
|
|
[Get started with InfluxDB tutorial](/influxdb/cloud-serverless/get-started/write/#construct-line-protocol)._
|
|
|
|
```sql
|
|
SELECT trunc(temp) AS trunc FROM home LIMIT 3
|
|
```
|
|
|
|
| trunc |
|
|
| ----: |
|
|
| 21 |
|
|
| 23 |
|
|
| 22 |
|
|
|
|
{{% /expand %}}
|
|
{{< /expand-wrapper >}}
|