本文介绍数学计算函数的基本语法和示例。
- 支持如下运算符:
+-*/%
- 在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status或"status"表示日志字段status。
函数名称 | 语法 | 说明 |
---|---|---|
abs函数 | abs(x) | 计算x的绝对值。 |
acos函数 | acos(x) | 计算x的反余弦。 |
asin函数 | asin(x) | 计算x的反正弦。 |
atan函数 | atan(x) | 计算x的反正切。 |
atan2函数 | atan2(x, y) | 计算x和y相除的结果的反正切。 |
cbrt函数 | cbrt(x) | 计算x的立方根。 |
ceil函数 | ceil(x) | 对x进行向上取整数。
ceil函数是ceiling函数的别名。 |
ceiling函数 | ceiling(x) | 对x进行向上取整数。 |
cos函数 | cos(x) | 计算x的余弦。 |
cosh函数 | cosh(x) | 计算x的双曲余弦。 |
cosine_similarity函数 | cosine_similarity(x, y) | 计算x和y之间的余弦相似度。 |
degrees函数 | degrees(x) | 将弧度转换为度。 |
e函数 | e() | 返回自然底数e的值。 |
exp函数 | exp(x) | 计算自然底数e的x次幂。 |
floor函数 | floor(x) | 对x进行向下取整数。 |
from_base函数 | from_base(x, y) | 根据BASE编码将x转为y进制的数字。 |
ln函数 | ln(x) | 计算x的自然对数。 |
infinity函数 | infinity() | 返回正无穷的数值。 |
is_nan函数 | is_nan(x) | 判断x是否为NaN。 |
log2函数 | log2(x) | 计算x以2为底的对数。 |
log10函数 | log10(x) | 计算x以10为底的对数。 |
log函数 | log(x, y) | 计算x以y为底的对数。 |
mod函数 | mod(x, y) | 计算x与y相除的余数。 |
nan函数 | nan() | 返回一个NaN值。 |
pi函数 | pi() | 返回π值,精确到小数点后15位。 |
pow函数 | pow(x, y) | 计算x的y次幂。
pow函数是power函数的别名。 |
power函数 | power(x, y) | 计算x的y次幂。 |
radians函数 | radians(x) | 将度转换为弧度。 |
rand函数 | rand() | 返回随机数。 |
random函数 | random() | 返回[0,1)之间的随机数。 |
random(x) | 返回[0,x)之间的随机数。 | |
round函数 | round(x) | 对x进行四舍五入取整数。 |
round(x, n) | 对x进行四舍五入且保留n位小数。 | |
sign函数 | sign(x) | 返回x的符号,通过1、0、-1表示。 |
sin函数 | sin(x) | 计算x的正弦。 |
sqrt函数 | sqrt(x) | 计算x的平方根。 |
tan函数 | tan(x) | 计算x的正切。 |
tanh函数 | tanh(x) | 计算x的双曲正切。 |
to_base函数 | to_base(x, y) | 根据BASE编码将x转为y进制的字符串。 |
truncate函数 | truncate(x) | 截断x的小数部分。 |
width_bucket函数 | width_bucke(x, bound1, bound2, numBuckets) | 将一段数值范围划分成大小相同的多个Bucket,然后返回x所属的Bucket。 |
width_bucke(x, bins) | 使用数组指定Bucket的范围,然后返回x所属的Bucket。 |
abs函数
abs函数用于计算x的绝对值。
语法
abs(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为smallint类型、integer类型、real类型、tinyint类型、bigint类型、double类型或decimal类型。 |
返回值类型
与参数值的类型一致。
示例
计算-25的绝对值。
- 查询和分析语句
* | select abs(-25)
- 查询和分析结果
acos函数
acos函数用于计算x的反余弦。
语法
acos(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型,取值范围为[-1,1]。
如果超出[-1,1],则返回NaN。 |
返回值类型
double类型。
示例
计算45°角的反余弦。
- 查询和分析语句
* | SELECT acos(pi()/4)
- 查询和分析结果
asin函数
asin函数用于计算x的反正弦。
语法
asin(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型,取值范围为[-1,1]。
如果超出[-1,1],则返回NaN。 |
返回值类型
double类型。
示例
计算45°角的反正弦。
- 查询和分析语句
* | SELECT asin(pi()/4)
- 查询和分析结果
atan函数
atan函数用于计算x的反正切。
语法
atan(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算45°角的反正切。
- 查询和分析语句
* | SELECT atan(pi()/4)
- 查询和分析结果
atan2函数
atan2函数用于计算x和y相除的结果的反正切。
语法
atan2(x, y)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
y | 参数值为double类型。 |
返回值类型
double类型。
示例
计算30°角的反正切。
- 查询和分析语句
* | SELECT atan2(pi(),6)
- 查询和分析结果
cbrt函数
cbrt函数用于计算x的立方根。
语法
cbrt(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算100的立方根。
- 查询和分析语句
* | select cbrt(100)
- 查询和分析结果
ceil函数
ceil函数用于对x进行向上取整数。ceil函数是ceiling函数的别名。
语法
ceil(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为tinyint、smallint、integer、real、bigint、double、decimal类型 。
|
返回值类型
与参数值的类型一致。
示例
对request_time字段的值进行向上取整数。
- 字段样例
request_time:9.3
- 查询和分析语句
* | SELECT ceil(request_time) AS request_time
- 查询和分析结果
ceiling函数
ceiling函数用于对x进行向上取整数。
语法
ceiling(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为tinyint、smallint、integer、real、bigint、double、decimal类型 。
|
返回值类型
与参数值的类型一致。
示例
对request_time字段的值进行向上取整数。
- 字段样例
request_time:9.3
- 查询和分析语句
* | SELECT ceiling(request_time) AS request_time
- 查询和分析结果
cos函数
cos函数用于计算x的余弦。
语法
cos(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算30°角的余弦。
- 查询和分析语句
* | SELECT cos(pi()/6)
- 查询和分析结果
cosh函数
cosh函数用于计算x的双曲余弦。
语法
cosh(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算30°角的双曲余弦。
- 查询和分析语句
* | SELECT cosh(pi()/6)
- 查询和分析结果
cosine_similarity函数
cosine_similarity函数用于计算x和y之间的余弦相似度。
语法
cosine_similarity(x, y)
参数说明
参数 | 说明 |
---|---|
x | 参数值为map(varchar,double)类型。 |
y | 参数值为map(varchar,double)类型。 |
返回值类型
double类型。
示例
计算两个向量之间的余弦相似度。
- 查询和分析语句
* | SELECT cosine_similarity(MAP(ARRAY['a'], ARRAY[1.0]), MAP(ARRAY['a'], ARRAY[2.0]))
- 查询和分析结果
degrees函数
degrees函数用于将弧度转换为度。
语法
degrees(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
将弧度π转换为度。
- 查询和分析语句
* | SELECT degrees(pi())
- 查询和分析结果
e函数
e函数用于返回自然底数e的值。
语法
e()
返回值类型
double类型。
示例
返回自然底数e的值。
- 查询和分析语句
* | SELECT e()
- 查询和分析结果
exp函数
exp函数用于计算自然底数e的x次幂。
语法
exp(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算自然底数e的3次幂。
- 查询和分析语句
* | SELECT exp(3)
- 查询和分析结果
floor函数
floor函数用于对x进行向下取整数。
语法
floor(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为tinyint、smallint、integer、real、bigint、double、decimal类型 。
|
返回值类型
double类型。
示例
对request_time字段的值进行向下取整数。
- 字段样例
request_time:10.3
- 查询和分析语句
* | SELECT ceiling(request_time) AS request_time
- 查询和分析结果
from_base函数
from_base函数将根据BASE编码将x转为y进制的数字。
语法
from_base(x, y)
参数说明
参数 | 说明 |
---|---|
x | 参数值为varchar类型。 |
y | 参数值为bigint类型。进制,取值范围为[2,36]。 |
返回值类型
bigint类型。
示例
将字符串1101转换为数字。
- 查询和分析语句
* | SELECT from_base('1101',2)
- 查询和分析结果
ln函数
ln函数用于计算x的自然对数。
语法
ln(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型且大于0。 |
返回值类型
double类型。
示例
计算2的自然对数。
- 查询和分析语句
* | SELECT ln(2)
- 查询和分析结果
infinity函数
infinity函数用于返回正无穷的数值。
语法
infinity()
返回值类型
double类型。
示例
用于返回正无穷的数值。
- 查询和分析语句
* | SELECT infinity()
- 查询和分析结果
is_nan函数
is_nan函数用于判断x是否为NaN。如果是,则返回true。
语法
is_nan(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
boolean类型。
示例
判断status字段的值是否为NaN。
- 查询和分析语句
* | SELECT is_nan(status)
- 查询和分析结果
log2函数
log2函数用于计算x以2为底的对数。
语法
log2(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算100以2为底的对数。
- 查询和分析语句
* | SELECT log2(100)
- 查询和分析结果
log10函数
log10函数用于计算x以10为底的对数。
语法
log10(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算100以10为底的对数。
- 查询和分析语句
* | SELECT log10(100)
- 查询和分析结果
log函数
log函数用于计算x以y为底数的对数。
语法
log(x, y)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
y | 参数值为double类型。 |
返回值类型
double类型。
示例
计算100以5为底数的对数。
- 查询和分析语句
* | SELECT log(100,5)
- 查询和分析结果
mod函数
mod函数用于计算x与y相除的余数。
语法
mod(x, y)
参数说明
参数 | 说明 |
---|---|
x | 参数值为tinyint、smallint、integer、real、bigint、double、decimal类型。 |
y | 参数值为tinyint、smallint、integer、real、bigint、double、decimal类型。 |
返回值类型
与参数值的数据类型一致。
示例
计算100与30相除的余数。
- 查询和分析语句
* | SELECT mod(100,30)
- 查询和分析结果
nan函数
nan函数用于返回一个NaN值(Not a Number)。
语法
nan()
返回值类型
double类型。
示例
返回一个NaN值。
- 查询和分析语句
* | SELECT nan()
- 查询和分析结果
pi函数
pi函数用于返回π值,精确到小数点后15位。
语法
pi()
返回值类型
double类型。
示例
返回π值,精确到小数点后15位。
- 查询和分析语句
* | SELECT pi()
- 查询和分析结果
pow函数
pow函数用于计算x的y次幂。pow函数是power函数的别名。
语法
pow(x, y)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
y | 参数值为double类型。 |
返回值类型
double类型。
示例
计算2的5次幂。
- 查询和分析语句
* | SELECT pow(2,5)
- 查询和分析结果
power函数
power用于计算x的y次幂。
语法
power(x, y)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
y | 参数值为double类型。 |
返回值类型
double类型。
示例
计算2的5次幂。
- 查询和分析语句
* | SELECT power(2,5)
- 查询和分析结果
radians函数
radians函数用于将度转换为弧度。
语法
radians(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算180°对应的弧度。
- 查询和分析语句
* | SELECT radians(180)
- 查询和分析结果
rand函数
rand函数用于返回随机数。
语法
rand()
返回值类型
double类型。
示例
返回一个随机数。
- 查询和分析语句
* | select rand()
- 查询和分析结果
random函数
random函数用于返回[0,x)之间的随机数。
语法
- 返回[0,1)之间的随机数。
random()
- 返回[0,x)之间的随机数。
random(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为tinyint、smallint、integer或bigint类型。 |
返回值类型
与参数值的类型一致。
示例
返回[0,100)之间的随机数。
- 查询和分析语句
* | select random(100)
- 查询和分析结果
round函数
round函数用于对x进行四舍五入。如果n存在,则保留n位小数;如果n不存在,则对x进行四舍五入取整数。
语法
- 对x进行四舍五入取整数。
round(x)
- 对x进行四舍五入且保留n位小数。
round(x, n)
参数说明
参数 | 说明 |
---|---|
x | 参数值为tinyint、smallint、integer或bigint类型。 |
n | n位小数。 |
返回值类型
与参数值的数据类型一致。
示例
- 查询和分析语句
* | SELECT diff [1] AS today, round((diff [3] -1.0) * 100, 2) AS growth FROM (SELECT compare(pv, 86400) as diff FROM (SELECT COUNT(*) as pv FROM website_log))
- 查询和分析结果
sign函数
sign函数用于返回x的符号,通过1、0、-1表示。
语法
sign(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为integer、smallint、tinyint、real、 double、bigint或decimal(p,s)类型。
|
返回值类型
与参数值的数据类型一致。
示例
计算数字10的符号。
- 查询和分析语句
* | SELECT sign(10)
- 查询和分析结果
sin函数
sin函数用于计算x的正弦。
语法
sin(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算90°角的正弦。
- 查询和分析语句
* | select sin(pi()/2)
- 查询和分析结果
sqrt函数
sqrt函数用于计算x的平方根。
语法
sqrt(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算100的平方根。
- 查询和分析语句
* | select sqrt(100)
- 查询和分析结果
tan函数
tan函数用于计算x的正切。
语法
tan(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算tan30°角的正切。
- 查询和分析语句
* | SELECT tan(pi()/6)
- 查询和分析结果
tanh函数
tanh函数用于计算x的双曲正切。
语法
tanh(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
计算30°的双曲正切。
- 查询和分析语句
* | SELECT tanh(pi()/6)
- 查询和分析结果
to_base函数
to_base函数将根据BASE编码将x转为y进制的字符串。
语法
to_base(x, y)
参数说明
参数 | 说明 |
---|---|
x | 参数值为bigint类型。 |
y | 参数值为bigint类型。进制,取值范围为[2,36]。 |
返回值类型
varchar类型。
示例
将180转换为二进制字符串。
- 查询和分析语句
* | SELECT to_base(180, 2)
- 查询和分析结果
truncate函数
truncate函数用于截断x的小数部分。
语法
truncate(x)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
返回值类型
double类型。
示例
截断11.11的小数部分。
- 查询和分析语句
* | SELECT truncate(11.11)
- 查询和分析结果
width_bucket函数
width_bucket函数用于返回x所属的Bucket。
语法
- 将一段数值范围划分成大小相同的多个Bucket,然后返回x所属的Bucket。
width_bucket(x, bound1, bound2, numBuckets)
- 使用数组指定Bucket的范围,然后返回x所属的Bucket。
width_bucket(x, bins)
参数说明
参数 | 说明 |
---|---|
x | 参数值为double类型。 |
bound1 | 提供数值范围的下限。 |
bound2 | 提供数值范围的上限。 |
numBuckets | Bucket数量。大于0的整数。 |
bins | 使用数组指定Bucket的范围。bins为double类型的数组。 |
返回值类型
- x在指定范围内,返回x的所属的Bucket。
- x在下限范围外,返回0。
- x在上限范围外,返回numBuckets+1。
示例
- 示例1:将[10,80)范围等分为7个Bucket,然后返回request_time字段的各个值所属的Bucket。
- 查询和分析语句
* | SELECT request_time, width_bucket(request_time, 10, 80,7) AS numBuckets
- 查询和分析结果
- 查询和分析语句
- 示例2:使用数组指定7个Bucket的范围,然后返回request_time字段的各个值所属的Bucket。
- 查询和分析语句
* | SELECT request_time, width_bucket(request_time, array[10,20,30,40,50,60,70,80]) AS numBuckets
- 查询和分析结果
- 查询和分析语句