联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
6.6.5 数学函数
更新时间:7/24/2024, 7:27:11 AM

简单求值
函数名 返回类型 描述

round(double a[, int d])

BigInt

四舍五入。

说明

未指定d时,四舍五入到小数点后一位;若指定了d,则四舍五入到小数点后第d位。

举例

SELECT round(1.4523,3) AS result FROM system.dual LIMIT 1;
复制
result

1.452

函数名 返回类型 描述

floor(double a)

BigInt

返回不大于a的最大整数

举例

SELECT floor(1.314) AS result FROM system.dual LIMIT 1;
复制
result

1

函数名 返回类型 描述

ceil(double a)

BigInt

返回不小于a的最小整数

举例

SELECT ceil(2.01) AS result FROM system.dual LIMIT 1;
复制
result

3

函数名 返回类型 描述

ceiling(double a)

BigInt

返回不小于a的最小整数,用法和 'ceil' 一致。

举例

SELECT ceiling(2.01) AS result FROM system.dual LIMIT 1;
复制
result

3

函数名 返回类型 描述

rand([int seed])

Double

生成0-1的随机数

说明

未指定seed时随机返回0-1的随机数;指定seed时;相同的seed得到的随机数结果是一样的,例如每次rand(100)的值都是一样的。

举例

SELECT rand(100) AS result FROM system.dual LIMIT 1;
复制
result

0.7220096548596434

函数名 返回类型 描述

abs(double a)

Double

返回a的绝对值

举例

SELECT abs(-1314) AS result FROM system.dual LIMIT 1;
复制
result

1314

函数名 返回类型 描述

pmod(int a, int b)

Numeric

返回正的取模,公式(a%b+b)%b

举例

SELECT pmod(-4,3) AS result FROM system.dual LIMIT 1;
复制
result

2

函数名 返回类型 描述

positive(int a)

Numeric

直接返回a

举例

SELECT positive(-1) AS result FROM system.dual;
复制
result

-1

函数名 返回类型 描述

negative(int a)

Numeric

返回-a

举例

SELECT negative(1) AS result FROM system.dual;
复制
result

-1

函数名 返回类型 描述

sign(x)

Double

判断正负

说明

x为正则返回1.0,为负则返回-1.0,为0则返回0.

举例

SELECT sign(-10) AS result FROM system.dual LIMIT 1;
复制
result

-1

函数名 返回类型 描述

pi()

Double

返回pi的值

举例

SELECT pi() AS result FROM system.dual;
复制
result

3.141592653589793

函数名 返回类型 描述

e()

Double

返回自然常数e

举例

SELECT e() AS result FROM system.dual;
复制
result

2.718281828459045

运算符 返回类型 描述

<a> div <b>

INT

返回a除以b的商(整数部分)。

举例

SELECT 5 div 2 AS result FROM system.dual LIMIT 1;
复制
result

2

函数 返回类型 描述

prime(<int>)

INT

返回小于等于参数 <int> 的最大质数。

举例

SELECT prime(4) AS result FROM system.dual LIMIT 1;
复制
result

3

函数 返回类型 描述

max_scalar(<scalar>, <scalar> [, <scalar>, …​])

数值类型

需要至少两个标量参数。返回所有参数中最大的。

举例

SELECT max_scalar(1, 4, 8) AS result FROM system.dual LIMIT 1;
复制
result

8

函数 返回类型 描述

min_scalar(<scalar>, <scalar> [, <scalar>, …​])

数值类型

需要至少两个标量参数。返回所有参数中最小的。

举例

SELECT min_scalar(1,4,8) AS result FROM system.dual LIMIT 1;
复制
result

1

函数 返回类型 描述

least (<arg>, <arg> [,<arg>, …​])

见描述

至少需要两个参数。返回最小参数。

举例

SELECT least(2, 3, 1) AS result FROM system.dual LIMIT 1;
复制
result

1

函数 返回类型 描述

trunc (<number>, <precision>)

数值类型

需要两个参数:一个数字 <number>,和精度 <precision>(小数点后保留的位数)。该函数将 <number> 截到指定的 <precision>

举例

SELECT trunc(123.456, 1) AS result FROM system.dual LIMIT 1;
复制
result

123.4

函数 返回类型 描述

shiftleft(n, int k)

数值类型

返回整数n左移k位后的数值。参数 n 可接受所有整数值,参数 k 必须是INT类型。

举例

SELECT shiftleft(8,1) AS result FROM system.dual;
复制
result

16

函数 返回类型 描述

shiftright(n, int k)

数值类型

返回整数n右移k位后的数值。参数 n 可接受所有整数值,参数 k 必须是INT类型。

举例

SELECT shiftright(8,1) AS result FROM system.dual;
复制
result

4

函数 返回类型 描述

shiftrightunsigned(n, int k)

数值类型

返回整数n无符号右移k位后的数值。参数 n 可接受所有整数值,参数 k 必须是INT类型。

举例

SELECT shiftrightunsigned(-8,1) AS result FROM system.dual;
复制
result

2147483644

函数 返回类型 描述

factorial(int n)

INT

返回n的阶乘。如果n的值不是属于[0,20]的整数,返回null。

举例

SELECT factorial(20) AS result FROM system.dual;
复制
result

2432902008176640000

幂/方根/对数
函数名 返回类型 描述

exp(double n)

Double

返回e的n次方

举例

SELECT exp(1) AS result FROM system.dual LIMIT 1;
复制
result

2.718281828459045

函数名 返回类型 描述

ln(double a)

Double

返回指定值的自然对数

举例

SELECT ln(exp(1.314)) AS result FROM system.dual;
复制
result

1.314

函数名 返回类型 描述

log10(double a)

Double

返回a以10为底的对数

举例

SELECT log10(100) AS result FROM system.dual LIMIT 1;
复制
result

2.0

函数名 返回类型 描述

log2(double a)

Double

返回a以2为底的对数

举例

SELECT log2(4) AS result FROM system.dual LIMIT 1;
复制
result

2.0

函数名 返回类型 描述

log(double base, double a)

Double

返回a以base为底的对数

举例

SELECT log(10,100) AS result FROM system.dual LIMIT 1;
复制
result

2.0

函数名 返回类型 描述

pow(double a, double p)

Double

返回a的p次幂

举例

SELECT pow(10,2) AS result FROM system.dual LIMIT 1;
复制
result

100.0

函数名 返回类型 描述

power(double a, double p)

Double

返回a的p次幂

举例

SELECT power(10,2) AS result FROM system.dual LIMIT 1;
复制
result

100.0

函数名 返回类型 描述

sqrt(double a)

DOUBLE

返回a的平方根

举例

SELECT sqrt(100) AS result FROM system.dual;
复制
result

10.0

函数名 返回类型 描述

cbrt(a)

Double

计算参数a的实立方根。a可以是任意数值类型。

举例

SELECT cbrt(27) AS result FROM system.dual;
复制
result

3.0

进制/度量转换
函数名 返回类型 描述

bin(BIGINT a)

String

返回二进制格式

举例

SELECT bin(10) AS result FROM system.dual LIMIT 1;
复制
result

1010

函数名 返回类型 描述

hex(BIGINT a) / hex(String a)

String

返回十六进制格式

说明

如果参数为BIGINT或者BINARY,函数将参数的十六进制以字符串形式输出。如果参数为字符串,函数按顺序将各个字符的十六进制ascii码以字符串形式输出。

举例

SELECT hex(16) AS result FROM system.dual LIMIT 1 ;
复制
result

10

SELECT hex('16') AS result FROM system.dual LIMIT 1 ;
复制
result

3136

函数名 返回类型 描述

unhex(String a)

String

返回十六进制格式

说明

十六进制转二进制格式,只接受字符格式,即使输入数值类型也转化为字符格式再转化为二进制。

举例

SELECT unhex(3136) AS result FROM system.dual LIMIT 1 ;
复制
result

16

函数名 返回类型 描述

conv(BIGINT num, int from_base, int to_base)

String

度量体系转化。

说明

将指定数值num,由原来的度量体系(from_base)转换为指定的度量体系(to_base)。任一参数为NULL,则返回结果为NULL。num可以为int,也可以是数字字符串。度量体系的取值范围为2-36。num没有符号,默认为无符号数。如果num带有“-”号,则为负数。

举例

SELECT conv(100, 2, 10) AS result FROM system.dual LIMIT 1;
复制
result

4

函数名 返回类型 描述

degrees(double rad)

Double

把弧度制的rad转化为角度。

举例

SELECT degrees(pi()) AS result FROM system.dual;
复制
result

180.0

函数名 返回类型 描述

radians(double ang)

Double

把角度制的ang转化为弧度。

举例

SELECT radians(180) AS result FROM system.dual;
复制
result

3.141592653589793

三角函数
函数名 返回类型 描述

sin(double a)

Double

返回a的正弦值,其中a是弧度制。

举例

SELECT sin(pi()/2) AS result FROM system.dual;
复制
result

1.0

函数名 返回类型 描述

asin(double a)

Double

返回a的反正弦值,a必须大于-1小于1,否则返回null。

举例

SELECT asin(1) AS result FROM system.dual;
复制
result

1.5707963267948966

函数名 返回类型 描述

cos(double a)

Double

返回a的余弦值,其中a是弧度制。

举例

SELECT cos(pi()) AS result FROM system.dual;
复制
result

-1.0

函数名 返回类型 描述

acos(double a)

Double

返回a的反余弦值,其中a是弧度制。

举例

SELECT acos(1) AS result FROM system.dual;
复制
result

0.0

函数名 返回类型 描述

tan(double a)

Double

返回a的正切值,其中a是弧度制。

举例

SELECT tan(pi()/4) AS result FROM system.dual;
复制
result

0.9999999999999999

函数名 返回类型 描述

atan(double a)

Double

返回a的余切值,其中a是弧度制。

举例

SELECT atan(1) AS result FROM system.dual;
复制
result

0.7853981633974483

线性回归函数

Timelyre提供以下线性回归函数(Linear Regression Functions),适用于使用最小二乘法对两列(自变量与因变量)的依赖关系进行回归分析的场景。

本小节用例所使用的表regrTable,列名从左到右为regr_id, price1, price2数据如下:

1|10|5
2|20|10
3|30|15
4|40|10
5|50|20
6|60|30
7|70|15
8|80|20
9|90|60
10|100|40
11|110|50
12|120|100
复制
函数名 返回类型 描述

regr_slope(col y,col x)

Double

返回拟合所给两列数据的回归线斜率

说明

col ycol x 为列名,必须是数值类型。

计算公式为:

(N*SUM(x*y)-SUM(x)*SUM(y))/(N*SUM(x*x)-SUM(x)*SUM(x))

N为值都不为空的数据对的数量。当N*SUM(x*x)=SUM(x)*SUM(x)时,将会返回null。

举例

SELECT regr_slope(price2,price1) AS result FROM regrtable;
复制
result

1.0860134629768137

函数名 返回类型 描述

regr_intercept(col y,col x)

Double

返回拟合所给两列数据的回归线的y截距

说明

col ycol x 为列名,必须是数值类型。

计算公式为:

(SUM(y)*SUM(x*x)-SUM(x)*SUM(x*y))/(N*SUM(x*x)-SUM(x)*SUM(x))

N为值都不为空的数据对的数量。如果N*SUM(x*x)=SUM(x)*SUM(x),将会返回null。

举例

SELECT regr_intercept(price2, price1) AS result FROM regrtable;
复制
result

31.062079281974576

函数名 返回类型 描述

regr_r2(col y,col x)

Double

返回拟合所给两列数据的回归线的决定系数

说明

col ycol x 为列名,必须是数值类型。

计算公式为:

POWER(N*SUM(x*y)-SUM(x) * SUM(y), 2) / [(N*SUM(x2)-SUM(x)2)*(N*SUM(y2)-SUM(y)2)]

N为值都不为空的数据对的数量。如果N*SUM(x*x)=SUM(x)*SUM(x),将会返回null;如果N*SUM(y*y)=SUM(y)*SUM(y),将返回1。

举例

SELECT regr_r2(price2, price1) AS result FROM regrtable;
复制
result

0.6892008515045164

函数名 返回类型 描述

regr_sxx(col y,col x)

Double

返回自变量col x的平方和

说明

col ycol x 为列名,必须是数值类型。

计算公式为:

(SUM(X2)-SUM(X)2)/N

举例

SELECT regr_sxx(price2, price1) AS result FROM regrtable;
复制
result

14299.999999999998

函数名 返回类型 描述

regr_syy(col y,col x)

Double

返回因变量col y的平方和

说明

col ycol x 为列名,必须是数值类型。

计算公式为:

(SUM(y2)-SUM(y)2)/N

举例

SELECT regr_syy(price2, price1) AS result FROM regrtable;
复制
result

8356.25

函数名 返回类型 描述

regr_sxy(col y,col x)

Double

返回自变量和因变量的乘方积

说明

col ycol x 为列名,必须是数值类型。

计算公式为:

(SUM(x*y)-SUM(x)*SUM(y))/N

如果N=0,则返回null。

举例

SELECT regr_sxy(price2, price1) AS result FROM regrtable;
复制
result

9075.0

函数名 返回类型 描述

regr_avgx(col y,col x)

Double

返回自变量col x的平均值

说明

col ycol x 为列名,必须是数值类型。

计算公式为:

SUM(x)/N

举例

SELECT regr_avgx(price2, price1) as result FROM regrtable;
复制
result

65.0

函数名 返回类型 描述

regr_avgy(col y,col x)

Double

返回因变量col y的平均值

说明

col ycol x 为列名,必须是数值类型。

计算公式为:

SUM(y)/N

举例

SELECT regr_avgy(price2, price1) as result FROM regrtable;
复制
result

31.25

函数名 返回类型 描述

regr_count(col y,col x)

Bigint

返回两列都不为NULL的输入行数

说明

col ycol x 为列名,必须是数值类型。

举例

SELECT regr_count(price2, price1) as result FROM regrtable;
复制
result

12