SELECT round(1.4523,3) AS result FROM system.dual LIMIT 1;
复制
简单求值
函数名 | 返回类型 | 描述 |
---|---|---|
round(double a[, int d]) |
BigInt |
四舍五入。 |
说明
未指定d时,四舍五入到小数点后一位;若指定了d,则四舍五入到小数点后第d位。
举例
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 y 和 col 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 y 和 col 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 y 和 col 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 y 和 col 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 y 和 col 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 y 和 col 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 y 和 col 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 y 和 col 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 y 和 col x 为列名,必须是数值类型。
举例
SELECT regr_count(price2, price1) as result FROM regrtable;
复制
result |
---|
12 |