Presto | 数学运算符和函数
数学运算符
运算符 | 描述 |
---|---|
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除(整数除法执行截断运算) |
% | 取模(求余) |
数学函数
abs(x) → [返回类型与 x 相同]
返回 x 的绝对值。
cbrt(x) → double
返回 x 的立方根。
ceil(x) → [返回类型与 x 相同]
ceiling()
函数的别名。
cosine_similarity(x, y) → double
返回稀疏向量 x 和 y 之间的余弦相似度:
1 | SELECT cosine_similarity(MAP(ARRAY['a'], ARRAY[1.0]), MAP(ARRAY['a'], ARRAY[2.0])); -- 1.0 |
degrees(x) → double
将以弧度为单位的角度 x 转换为度。
e() → double
返回欧拉数 e。
常数 e,作为数学常数,是自然对数函数的底数,亦称自然常数、自然底数,或是欧拉数(Euler’s number),以瑞士数学家欧拉命名;还有个较少见的名字纳皮尔常数,用来纪念苏格兰数学家约翰·纳皮尔引进对数。它是一个无限不循环小数(无理数),数值约是(小数点后 20 位):2.71828182845904523536,近似值约为 271801/99990。
exp(x) → double
返回欧拉数 e 的 x 次幂。
floor(x) → [返回类型与 x 相同]
返回小于或等于 x 的最大整数(即:向下舍入到最接近的整数)。注意,该函数返回的类型与参数 x 的类型一致。
示例
1 | SELECT typeof(floor(3)) -- integer |
from_base(string, radix) → bigint
将 radix
进制的字符串 string
转换为 bigint。
示例
1 | SELECT from_base('100', 16); -- 256 |
ln(x) → double
返回 x 的自然对数。
自然对数是以常数 e 为底数的对数,记作 lnN(N>0)。
示例
1 | SELECT ln(e()); -- 1 |
log2(x) → double
返回 x 以 2 为底的对数。
log10(x) → double
返回 x 以 10 为底的对数。
mod(n, m) → [返回类型与输入相同]
返回 n 除以 m 的余数。
示例
1 | SELECT mod(4, 2); -- 0 |
pi() → double
返回常数 π。
pow(x, p) → double
返回 x 的 p 次幂,power() 函数的别名。
power(x, p) → double
返回 x 的 p 次幂。
radians(x) → double
将度数 x 转换为弧度。
如何将度数转换为弧度?
π 弧度等于180度:π 弧度 = 180°
1 度等于 0.01745329252 弧度:
1°=π / 180°=0.005555556π= 0.01745329252 弧度
弧度 = 度 × π / 180°
示例
1 | SELECT radians(180) -- 3.141592653589793 |
rand() → double
返回范围在 0.0 <= x < 1.0 之间的伪随机值,random() 函数的别名。
random() → double
返回范围在 0.0 <= x < 1.0 之间的伪随机值。
secure_rand() → double
返回范围在0.0 <= x < 1.0之间的加密安全随机值,secure_random()
函数的别名。
secure_random() → double
返回范围在0.0 <= x < 1.0之间的加密安全随机值。
secure_random(lower, upper) → [返回类型与 x 相同]
返回范围在lower <= x < upper之间的加密安全随机值,其中 lower < upper。
round(x) → [返回类型与 x 相同]
返回 x 四舍五入后的整数。
示例
1 | SELECT round(3.49); -- 3 |
round(x, d) → [返回类型与 x 相同]
将 x 四舍五入到小数点后 d 位。
示例
1 | SELECT round(3.49, 1); -- 3.5 |
sign(x) → [返回类型与 x 相同]
返回 x 的符号函数,即:
- 如果参数为 0,则返回 0;
- 如果参数大于 0,则返回 1;
- 如果参数小于 0,则返回 -1。
对于 double 参数,该函数另外返回:
- 如果参数为 NaN,则返回 NaN;
- 如果参数为 +Infinity,则返回 1;
- 如果参数为 -Infinity,则返回 -1。
sqrt(x) → double
返回 x 的平方根。
to_base(x, radix) → varchar
将 x 转换为 radix 进制字符串。
示例
1 | SELECT to_base(256, 16); -- 100 |
truncate(x) → double
返回 x 舍弃小数位后取整的整数。
示例
1 | SELECT truncate(2.5921); -- 2 |
truncate(x, n) → double
返回 x 截断到小数点后 n 位。n 可以是负数,以截断小数点左侧的 n 位数。
示例
1 | SELECT truncate(2.5921, 1); -- 2.5 |
width_bucket(x, bound1, bound2, n) → bigint
将指定的边界 bound1 ~ bound2 均分为 n 等份(即 n 个等值区间)返回 x 所处区间(区间编号从 0 开始)。
示例
在以下示例中,将边界 0 ~ 30 均匀划分为 3 个等值区间,即 [0, 10),[10, 20),[20, 30),区间编号分别为 1、2、3,小于 0 的区间编号为 0 ,大于 30 的区间编号为 4。
当 x 的值分别为 -1,0,10,20,30,50 时,返回 x 所属区间号。
1 | SELECT width_bucket(-1, 0, 30, 3); -- 0 |
width_bucket(x, bins) → bigint
指定预设边界数组 bins
,返回 x 所处区间(区间编号从 0 开始)。bins
参数必须是一个 double 类型的数组,并且是按升序排序的。
示例
用数组 [10, 20, 30] 表示自定义区间分布,其分布如下:
1 | <10 |
1 | SELECT width_bucket(1, array[10, 20, 30]); -- 0 |
统计函数
wilson_interval_lower(successes, trials, z) → double
返回伯努利试验过程在由z分数z
指定的置信水平下的Wilson分数区间的下界。
wilson_interval_upper(successes, trials, z) → double
返回伯努利试验过程在由z分数z
指定的置信水平下的Wilson分数区间的上界。
三角函数
所有三角函数的参数均以弧度表示。参见单位转换函数 degrees() 和 radians()。
acos(x) → double
返回x
的反余弦。
asin(x) → double
返回x
的反正弦。
atan(x) → double
返回x
的反正切。
atan2(y, x) → double
返回y / x
的反正切。
cos(x) → double
返回x
的余弦。
cosh(x) → double
返回x
的双曲余弦。
sin(x) → double
返回x
的正弦。
tan(x) → double
返回x
的正切。
tanh(x) → double
返回x
的双曲正切。
浮点数函数
infinity() → double
返回代表正无穷大的常量。
is_finite(x) → boolean
判断x
是否是有限的。
is_infinite(x) → boolean
判断x
是否是无穷大的。
is_nan(x) → boolean
判断x
是否不是一个数字(非数字)。
nan() → double
返回代表不是数字的常量。
(END)