本文为您介绍Hologres已支持的数学函数及使用用例。
关于兼容PostgreSQL的数学函数的详细使用方法,请参见数学函数。
本文示例的返回结果基于psql客户端的默认显示精度(extra_float_digits = 0)。浮点类型结果的实际显示位数会随客户端extra_float_digits设置不同而变化,数值本身一致。
|
类型 |
函数 |
功能 |
|
通用数学函数 |
计算绝对值。 |
|
|
计算立方根。 |
||
|
向上取整。 |
||
|
向上取整。 |
||
|
将弧度转换为角度。 |
||
|
计算指数。 |
||
|
向下取整。 |
||
|
计算自然对数。 |
||
|
计算常用对数。 |
||
|
计算表达式除以x的余数。 |
||
|
获取π常量。 |
||
|
计算a的b次幂。 |
||
|
计算角度转换为弧度。 |
||
|
获取一个随机数。 |
||
|
计算表达式四舍五入后的整数值或保留固定小数位数。 |
||
|
计算表达式的符号。 |
||
|
计算表达式的平方根。 |
||
|
去掉表达式的小数位或保留固定小数位数。 |
||
|
计算某个值在桶中某区间的编号。 |
||
|
计算 y 除以 x 的整数商。 |
||
|
三角函数 |
计算表达式的反余弦值。 |
|
|
计算表达式的反正弦值。 |
||
|
计算表达式的反正切值。 |
||
|
计算 |
||
|
计算表达式的余弦值。 |
||
|
计算表达式的余切值。 |
||
|
计算表达式的正弦值。 |
||
|
计算表达式的正切值。 |
通用数学函数
ABS
-
描述:计算绝对值。
ABS(num) -
参数说明:
num:必填,支持类型包括INT、BIGINT、REAL、DOUBLE PRECISION、NUMERIC和DECIMAL。 -
返回值说明:
与参数类型一致。
-
示例:
SELECT ABS(-17.4);返回结果如下。
abs ----- 17.4
CBRT
-
描述:计算立方根。
CBRT(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION。 -
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT CBRT(9);返回结果如下。
cbrt ----------------- 2.0800838230519
CEIL
-
描述:向上取整。
CEIL(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION或NUMERIC。 -
返回值说明:
与参数类型一致。
-
示例:
SELECT CEIL(9.2);返回结果如下。
ceil ------ 10
CEILING
-
描述:向上取整。
CEILING(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION或NUMERIC。 -
返回值说明:
与参数类型一致。
-
示例:
SELECT CEILING(9.2);返回结果如下。
ceiling --------- 10
DEGREES
-
描述:将弧度转换为角度。
DEGREES(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION。 -
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT DEGREES(3.2);返回结果如下。
degrees -------------- 183.34649444186343
EXP
-
描述:计算指数。
EXP(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION或NUMERIC。 -
返回值说明:
与参数类型一致。
-
示例:
SELECT EXP(1);返回结果如下。
exp ---------------- 2.718281828459045
FLOOR
-
描述:向下取整。
FLOOR(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION或NUMERIC。 -
返回值说明:
与参数类型一致。
-
示例:
SELECT FLOOR(3.8);返回结果如下。
floor ------ 3
LN
-
描述:计算自然对数。
LN(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION或NUMERIC。 -
返回值说明:
与参数类型一致。
-
示例:
SELECT LN(3.8);返回结果如下。
ln ---------------- 1.3350010667323401
LOG
-
描述:
-
计算以 10 为底的常用对数。
LOG(num) -
计算以 b 为底 x 的对数(双参数形式)。
LOG(b, x)
-
-
参数说明:
-
单参数形式:
num:必填,类型为DOUBLE PRECISION或NUMERIC。 -
双参数形式:
b:必填,对数底数,类型为NUMERIC;x:必填,真数,类型为NUMERIC。
-
-
返回值说明:
与参数类型一致。
-
示例:
-
示例1(单参数):
SELECT LOG(100);返回结果如下。
log ----- 2 -
示例2(双参数):
SELECT LOG(2, 8);返回结果如下。
log -------------------- 3.0000000000000000
-
MOD
-
描述:计算表达式除以x的余数。
MOD(num, x) -
参数说明:
-
num:必填,数值类型参数。 -
x:必填,数值类型参数。
-
-
返回值说明:
与参数类型一致。
-
示例:
SELECT MOD(9,4);返回结果如下。
mod ----- 1
PI
-
描述:获取π常量。
PI() -
返回值说明:
返回π常量。
-
示例:
SELECT PI();返回结果如下。
pi ------------------ 3.14159265358979
POWER
-
描述:计算a的b次幂。
POWER(a, b) -
参数说明:
-
a:必填,类型为DOUBLE PRECISION。 -
b:必填,类型为DOUBLE PRECISION。
-
-
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT POWER(9, 3);返回结果如下。
power ------- 729
RADIANS
-
描述:角度转换为弧度。
RADIANS(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION。
-
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT RADIANS(45);返回结果如下。
radians ------------------- 0.785398163397448
RANDOM
-
描述:获取一个随机数。
RANDOM() -
返回值说明:
返回一个随机数,类型为DOUBLE PRECISION,范围为
[0.0, 1.0)。 -
示例:
SELECT RANDOM();返回结果如下。
random ------------------- 0.377819478977472
ROUND
-
描述:
-
计算表达式四舍五入后的整数值。
ROUND(num) -
计算表达式四舍五入后的值,且保留s位小数。
ROUND(num1, s)
-
-
参数说明:
-
num:必填,若单入参时,数值类型为DOUBLE PRECISION或NUMERIC;若双入参时,仅支持NUMERIC类型。 -
s:选填,类型为INT。
-
-
返回值说明:
与参数类型一致。
-
示例:
SELECT ROUND(42.4);返回结果如下。
round ------- 42
SIGN
-
描述:计算表达式的符号。
SIGN(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION或NUMERIC。
-
返回值说明:
参数值大于0返回1,小于0返回-1,等于0返回0。
-
示例:
SELECT SIGN(-8.4);返回结果如下。
sign ------ -1
SQRT
-
描述:计算表达式的平方根。
SQRT(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION或NUMERIC。
-
返回值说明:
与参数类型一致。
-
示例:
SELECT SQRT(2);返回结果如下。
sqrt ----------------- 1.4142135623731
TRUNC
-
描述:
-
去掉表达式的小数位。
TRUNC(num) -
去掉表达式的小数位,保留小数位置到s位。
TRUNC(num, s)
-
-
参数说明:
-
num:必填,类型为NUMERIC。 -
s:选填,类型为INT。
-
-
返回值说明:
返回值类型为NUMERIC。
-
示例:
-
示例1:
SELECT TRUNC(2.456);返回值如下。
trunc ------- 2 -
示例2:
SELECT TRUNC(2.4564, 2);返回值如下。
trunc ------- 2.45
-
WIDTH_BUCKET
-
描述:计算某个值在桶中某区间的编号。
WIDTH_BUCKET(value, start, end, num_buckets) -
参数说明:
value:必填,要进行分桶的目标值。数据类型为DOUBLE PRECISION或NUMERIC。start:必填,区间的起始值。数据类型为DOUBLE PRECISION或NUMERIC。end:必填,区间的结束值。数据类型为DOUBLE PRECISION或NUMERIC。num_buckets:必填,要划分的桶(区间)的数量。数据类型为INT。 -
返回值说明:
返回值数据类型为INT。
-
示例:
--范围从0到100的数据,分成5个桶,45落在(40, 60)的范围内,第三个桶。 SELECT WIDTH_BUCKET(45, 0, 100, 5);返回结果如下。
width_bucket -------------- 3
DIV
-
描述:计算 y 除以 x 的整数商(截断小数部分)。
DIV(y, x) -
参数说明:
-
y:必填,数值类型(INT、BIGINT、NUMERIC)。 -
x:必填,数值类型(INT、BIGINT、NUMERIC),不能为 0。
-
-
返回值说明:
与参数类型一致。
-
示例:
SELECT DIV(9, 4);返回结果如下。
div ----- 2
三角函数
ACOS
-
描述:计算表达式的反余弦值。
ACOS(num) -
参数说明:
num:必填,数值类型参数。范围在[-1,1]之间。 -
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT ACOS(-1);返回结果如下。
acos ------------------ 3.14159265358979
ASIN
-
描述:计算表达式的反正弦值。
ASIN(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION。范围在[-1,1]之间。 -
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT ASIN(-1);返回结果如下。
asin ------------------ -1.5707963267949
ATAN
-
描述:计算表达式的反正切值。
ATAN(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION。 -
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT ATAN(2);返回结果如下。
atan ------------------ 1.10714871779409
ATAN2
-
描述:计算
y/x的反正切值。ATAN2(y, x); -
参数说明:
-
y:必填,类型为DOUBLE PRECISION。 -
x:必填,类型为DOUBLE PRECISION。
-
-
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT ATAN2(4, 2);返回结果如下。
atan2 ------------------ 1.10714871779409
COS
-
描述:计算表达式的余弦值。
COS(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION。 -
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT COS(2);返回结果如下。
cos -------------------- -0.416146836547142
COT
-
描述:计算表达式的余切值。
COT(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION。 -
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT COT(2);返回结果如下。
cot -------------------- -0.457657554360286
SIN
-
描述:计算表达式的正弦值。
SIN(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION。 -
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT SIN(2);返回结果如下。
sin ------------------- 0.909297426825682
TAN
-
描述:计算表达式的正切值。
TAN(num) -
参数说明:
num:必填,类型为DOUBLE PRECISION。 -
返回值说明:
返回值类型为DOUBLE PRECISION。
-
示例:
SELECT TAN(2);返回结果如下。
tan ------------------- -2.18503986326152