数学函数

最近更新时间:2022-11-10 17:59:32

我的收藏

ABS

函数语法:
ABS(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的绝对值
返回类型:与<expr>一致
示例:
> SELECT abs(-1);
1

ACOS

函数语法:
ACOS(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的反余弦
返回类型:double
示例:
> SELECT acos(1);
0.0
> SELECT acos(2);
NaN

ACOSH

函数语法:
ACOSH(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的反双曲余弦值
返回类型:double
示例:
> SELECT acosh(1);
0.0
> SELECT acosh(0);
NaN

ASIN

函数语法:
ASIN(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的反正弦
返回类型:double
示例:
> SELECT asin(0);
0.0
> SELECT asin(2);
NaN

ASINH

函数语法:
ASINH(<expr> integer|double|decimal)
支持引擎:SparkSQL
使用说明:返回expr的反双曲正弦值。
返回类型:double
示例:
> SELECT asinh(0);
0.0

ATAN

函数语法:
ATAN(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的反正切
返回类型:double
示例:
> SELECT atan(0);
0.0

ATAN2

函数语法:
ATAN2(<x>, integer|double|decimal, <y> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回平面的正 x 轴与坐标给定的点之间的弧度角
返回类型:double
示例:
> SELECT atan2(0, 0);
0.0

ATANH

函数语法:
ATANH(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回 expr 的反双曲正切。
返回类型:double
示例:
> SELECT atanh(0);
0.0
> SELECT atanh(2);
NaN

BIN

函数语法:
BIN(<expr> integer)
支持引擎:SparkSQL、Presto
使用说明:返回以二进制表示的长值expr的字符串表示形式。
返回类型:string
示例:
> SELECT bin(13);
1101
> SELECT bin(-13);
1111111111111111111111111111111111111111111111111111111111110011

BROUND

函数语法:
BROUND(<expr> integer|double|decimal, <d> integer)
支持引擎:SparkSQL、Presto
使用说明:返回 expr 使用 HALF_EVEN 舍入模式舍入到d位小数
返回类型:decimal
示例:
> SELECT bround(2.5, 0);
2

CBRT

函数语法:
CBRT(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的立方根。
返回类型:double
示例:
> SELECT cbrt(27.0);
3.0

CEIL

函数语法:
CEIL(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回不小于expr的最小整数
返回类型:integer
示例:
> SELECT ceil(-0.1);
0
> SELECT ceil(5);
5

COS

函数语法:
COS(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的余弦
返回类型:double
示例:
> SELECT cos(0);
1.0

COSH

函数语法:
COSH(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的双曲余弦
返回类型:double
示例:
> SELECT cosh(0);
1.0

CONV

函数语法:
CONV(<num> bigint|string, <from_base> integer, <to_base> integer)
支持引擎:SparkSQL、Presto
使用说明:将num从from_base转换为to_base
返回类型:string
示例:
> SELECT conv('100', 2, 10);
4
> SELECT conv(-10, 16, -10);
-16

DEGREES

函数语法:
DEGREES(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:弧度转化为角度
返回类型:double
示例:
> SELECT degrees(3.141592653589793);
180.0

E

函数语法:
E()
支持引擎:SparkSQL、Presto
使用说明:返回欧拉常数
返回类型:double
示例:
> SELECT e();
2.718281828459045

EXP

函数语法:
EXP(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回欧拉常数e的expr次方
返回类型:double
示例:
> SELECT exp(0);
1.0

EXPM1

函数语法:
EXPM1(<expr> integer|double|decimal)
支持引擎:SparkSQL
使用说明:返回EXP(expr)-1
返回类型:double
示例:
> SELECT expm1(0);
0.0

FLOOR

函数语法:
FLOOR(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回不大于expr的最大整数
返回类型:integer
示例:
> SELECT floor(-0.1);
-1
> SELECT floor(5);
5

FACTORIAL

函数语法:
FACTORIAL(<expr> integer)
支持引擎:SparkSQL、Presto
使用说明:返回expr的阶乘。 expr为[0..20]。 否则为NULL。
返回类型:bigint
示例:
> SELECT factorial(5);
120

HEX

函数语法:
HEX(<expr> bigint|string)
支持引擎:SparkSQL、Presto
使用说明:以十六进制返回expr
返回类型:string
示例:
> SELECT hex(17);
11
> SELECT hex('Spark SQL');
537061726B2053514C

HYPOT

函数语法:
HYPOT(<expr1> integer|double|decimal, <expr2> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回sqrt(pow(expr1, 2) + pow(expr2, 2))
返回类型:double
示例:
> SELECT hypot(3, 4);
5.0

LOG

函数语法:
LOG(<base> integer|double|decimal, <expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr以base为底数的对数。
返回类型:double
示例:
> SELECT log(10, 100);
2.0

LOG10

函数语法:
LOG10(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr以10为底数的对数。
返回类型:double
示例:
> SELECT log10(10);
1.0

LOG1P

函数语法:
LOG1P(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回log(1 + expr)
返回类型:double
示例:
> SELECT log1p(0);
0.0

LOG2

函数语法:
LOG2(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回以2为底的expr的对数。
返回类型:double
示例:
> SELECT log2(2);
1.0

LN

函数语法:
LN(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的自然对数(以e为底)。
返回类型:double
示例:
> SELECT ln(1);
0.0

MOD

函数语法:
MOD(<expr1> integer|double|decimal, <expr2> integer|double|decimal)
<expr1> MOD <expr2>
支持引擎:SparkSQL、Presto
使用说明:返回expr1/expr2之后的余数。
返回类型:double|integer
示例:
> SELECT 2 % 1.8;
0.2
> SELECT MOD(2, 1.8);
0.2

NEGATIVE

函数语法:
NEGATIVE(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的负数
返回类型:与expr一致
示例:
> SELECT negative(1);
-1

PI

函数语法:
PI()
支持引擎:SparkSQL、Presto
使用说明:返回PI
返回类型:double
示例:
> SELECT pi();
3.141592653589793

PMOD

函数语法:
PMOD(<expr1> integer|double|decimal, <expr2> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr1 mod expr2的正值。
返回类型:double
示例:
> SELECT pmod(10, 3);
1
> SELECT pmod(-10, 3);
2

POSITIVE

函数语法:
POSITIVE(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr
返回类型:与expr一致
示例:
> SELECT positive(1);
1

POWER

函数语法:
POWER(<base> integer|double|decimal, <number> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回base的number次方
返回类型:double
示例:
> SELECT power(2, 3);
8.0

POW

函数语法:
POW(<base> integer|double|decimal, <number> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回base的number次方
返回类型:double
示例:
> SELECT pow(2, 3);
8.0

RADIANS

函数语法:
RADIANS(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:将度转换为弧度
返回类型:double
示例:
> SELECT radians(180);
3.141592653589793

RINT

函数语法:
RINT(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回与参数值最近且等于数学整数的双精度值
返回类型:double
示例:
> SELECT rint(12.3456);
12.0

ROUND

函数语法:
ROUND(<expr> integer|double|decimal, <d> integer)
支持引擎:SparkSQL、Presto
使用说明:使用半向上舍入模式将expr舍入到d位小数。
返回类型:double
示例:
> SELECT round(2.5, 0);
3

SHIFTLEFT

函数语法:
SHIFTLEFT(<base> integer|double|decimal, <expr> integer)
支持引擎:SparkSQL、Presto
使用说明:按位向左移位。
返回类型:int |bigint
示例:
> SELECT shiftleft(2, 1);
4

SHIFTRIGHT

函数语法:
SHIFTRIGHT(<base> integer|double|decimal, <expr> integer)
支持引擎:SparkSQL、Presto
使用说明:按位向右移位。
返回类型:int |bigint
示例:
> SELECT shiftright(4, 1);
2

SHIFTRIGHTUNSIGNED

函数语法:
SHIFTRIGHTUNSIGNED(<base> integer|double|decimal, <expr> integer)
支持引擎:SparkSQL、Presto
使用说明:按位无符号右移。
返回类型:int |bigint
示例:
> SELECT shiftrightunsigned(4, 1);
2

SIGN

函数语法:
SIGN(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:当expr为负、0或正时,返回-1.0、0.0或1.0。
返回类型:double
示例:
> SELECT sign(40);
1.0

SIGNUM

函数语法:
SIGNUM(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:当expr为负、0或正时,返回-1.0、0.0或1.0。
返回类型:double
示例:
> SELECT signum(40);
1.0

SIN

函数语法:
SIN(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的正弦值
返回类型:double
示例:
> SELECT sin(0);
0.0

SINH

函数语法:
SINH(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的双曲正弦
返回类型:double
示例:
> SELECT sinh(0);
0.0

SQRT

函数语法:
SQRT(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的平方根
返回类型:double
示例:
> SELECT sqrt(4);
2.0

TAN

函数语法:
TAN(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的正切值
返回类型:double
示例:
> SELECT tan(0);
0.0

COT

函数语法:
COT(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回表达式的余切
返回类型:double
示例:
> SELECT cot(1);
0.6420926159343306

TANH

函数语法:
TANH(<expr> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回expr的双曲正切
返回类型:double
示例:
> SELECT tanh(0);
0.0

WIDTH_BUCKET

函数语法:
WIDTH_BUCKET(<value> integer|double|decimal, <min> integer|double|decimal, <max> integer|double|decimal, <num_backet> integer)
支持引擎:SparkSQL、Presto
使用说明:从min到max的等分为num_backet个分组,返回value落入的分组编号
返回类型:integer
示例:
> SELECT width_bucket(5.3, 0.2, 10.6, 5);
3
> SELECT width_bucket(-2.1, 1.3, 3.4, 3);
0
> SELECT width_bucket(8.1, 0.0, 5.7, 4);
5
> SELECT width_bucket(-0.9, 5.2, 0.5, 2);
3

TRY_ADD

函数语法:
TRY_ADD(<expr1> integer|double|decimal|date|timestamp, <expr2> integer|double|decimal|date|timestamp)
支持引擎:SparkSQL、Presto
使用说明:返回expr1和expr2的总和,溢出时结果为null
返回类型:integer|double|decimal|date|timestamp
示例:
> SELECT try_add(1, 2);
3
> SELECT try_add(2147483647, 1);
NULL
> SELECT try_add(date'2021-01-01', 1);
2021-01-02

TRY_DIVIDE

函数语法:
TRY_DIVIDE(<dividend> integer|double|decimal, <divisor> integer|double|decimal)
支持引擎:SparkSQL、Presto
使用说明:返回dividend/divisor
返回类型:double
示例:
> SELECT try_divide(3, 2);
1.5
> SELECT try_divide(2L, 2L);
1.0
> SELECT try_divide(1, 0);
NULL

RAND

函数语法:
RAND([<seed> integer])
支持引擎:SparkSQL、Presto
使用说明:返回一个随机值,该随机值为[0,1]中的值独立且均匀分布。
返回类型:double
示例:
> SELECT rand();
0.9629742951434543
> SELECT rand(0);
0.7604953758285915
> SELECT rand(null);
0.7604953758285915

RANDOM

函数语法:
RANDOM([<seed> integer])
支持引擎:SparkSQL、Presto
使用说明:返回一个随机值,该随机值为[0,1]中的值独立且均匀分布。
返回类型:double
示例:
> SELECT rand();
0.9629742951434543
> SELECT rand(0);
0.7604953758285915
> SELECT rand(null);
0.7604953758285915

RANDN

函数语法:
RANDN([<seed> integer])
支持引擎:SparkSQL、Presto
使用说明:返回一个随机值,其中包含从标准正态分布中提取的独立和同分布(i.i.d.)值。该函数在SPARKSQL与PRESTO中的实现方式不一致,使用相同的seed可能得到不同的结果。
返回类型:double
示例:
> SELECT randn();
-0.3254147983080288
> SELECT randn(0);
1.6034991609278433
> SELECT randn(null);
1.6034991609278433

DIV

函数语法:
<expr1> DIV <expr2>
支持引擎:SparkSQL
使用说明:expr1除以expr2
返回类型:integer
示例:
> SELECT 3 div 2;
1