数学函数和运算符

数学运算符

运算符

描述

+

加法

-

减法

*

乘法

/

除法(整数除法执行截断)

%

取模(余数)

数学函数

abs(x) -> [与输入相同]()

返回 x 的绝对值。

cbrt(x) -> double()

返回 x 的立方根。

ceil(x) -> [与输入相同]()

这是 ceiling() 的别名。

ceiling(x) -> [与输入相同]()

返回向上舍入到最接近的整数的 x

cosine_similarity(x, y) -> double()

返回稀疏向量 xy 之间的余弦相似度。

SELECT cosine_similarity(MAP(ARRAY['a'], ARRAY[1.0]), MAP(ARRAY['a'], ARRAY[2.0])); -- 1.0
degrees(x) -> double()

将以弧度为单位的角度 x 转换为度。

e() -> double()

返回常数欧拉数。

exp(x) -> double()

返回欧拉数的 x 次方。

floor(x) -> [与输入相同]()

返回向下舍入到最接近的整数的 x

from_base(string, radix) -> bigint()

返回解释为 radix 进制数的 string 的值。

ln(x) -> double()

返回 x 的自然对数。

log2(x) -> double()

返回 x 的以 2 为底的对数。

log10(x) -> double()

返回 x 的以 10 为底的对数。

mod(n, m) -> [same as input]()

返回 n 除以 m 的模(余数)。

pi() -> double()

返回圆周率常数 Pi。

pow(x, p) -> double()

这是 power() 的别名。

power(x, p) -> double()

返回 xp 次方。

radians(x) -> double()

将度数为 x 的角度转换为弧度。

rand() -> double()

这是 random() 的别名。

random() -> double()

返回介于 0.0 <= x < 1.0 之间的伪随机值。

random(n) -> [same as input]()

返回介于 0 和 n(不含 n)之间的伪随机数。

secure_rand() -> double()

这是 secure_random() 的别名。

secure_random() -> double()

返回介于 0.0 <= x < 1.0 之间的密码学安全的随机值。

secure_random(lower, upper) -> [same as input]()

返回介于 lower <= x < upper 之间的密码学安全的随机值,其中 lower < upper。

round(x) -> [same as input]()

返回四舍五入到最接近整数的 x

round(x, d) -> [same as input]()

返回四舍五入到 d 小数位的 x

sign(x) -> [same as input]()

返回 x 的符号函数,即

  • 如果参数为 0,则为 0,

  • 如果参数大于 0,则为 1,

  • 如果参数小于 0,则为 -1。

对于双精度参数,该函数还返回

  • 如果参数为 NaN,则为 NaN,

  • 如果参数为 +Infinity,则为 1,

  • 如果参数为 -Infinity,则为 -1。

sqrt(x) -> double()

返回 x 的平方根。

to_base(x, radix) -> varchar()

返回 xradix 进制表示。

truncate(x) -> double()

返回通过删除小数点后的数字来四舍五入到整数的 x

truncate(x, n) -> double()

返回截断到 n 小数位的 xn 可以为负数,以截断小数点左侧的 n 位数字。

示例:truncate(REAL '12.333', -1) -> 结果为 10.0 truncate(REAL '12.333', 0) -> 结果为 12.0 truncate(REAL '12.333', 1) -> 结果为 12.3

width_bucket(x, bound1, bound2, n) -> bigint()

返回 x 在具有指定 bound1bound2 边界以及 n 个桶的等宽直方图中的桶号。

width_bucket(x, bins) -> bigint()

根据数组 bins 指定的桶返回 x 的桶号。 bins 参数必须是双精度数数组,并假定为按升序排序。

概率函数:cdf

beta_cdf(a, b, value) -> double()

计算给定 a、b 参数的 Beta cdf:P(N < value; a, b)。a、b 参数必须为正实数,value 必须为实数(均为 DOUBLE 类型)。value 必须位于 [0, 1] 区间内。

binomial_cdf(numberOfTrials, successProbability, value) -> double()

计算给定 numberOfTrials 和 successProbability(对于单个试验)的二项式 cdf:P(N < value)。successProbability 必须为 [0, 1] 中的实数值,numberOfTrials 和 value 必须为正整数,其中 numberOfTrials 大于或等于 value。

cauchy_cdf(median, scale, value) -> double()

计算给定参数 median 和 scale(gamma)的柯西 cdf:P(N; median, scale)。scale 参数必须为正双精度数。value 参数必须为 [0, 1] 区间内的双精度数。

chi_squared_cdf(df, value) -> double()

计算给定 df(自由度)参数的卡方 cdf:P(N < value; df)。df 参数必须为正实数,value 必须为非负实数(均为 DOUBLE 类型)。

f_cdf(df1, df2, value) -> double()

计算给定 df1(分子自由度)和 df2(分母自由度)参数的 F cdf:P(N < value; df1, df2)。分子和分母 df 参数必须为正实数。value 必须为非负实数。

gamma_cdf(shape, scale, value) -> double()

计算给定形状和比例参数的伽马累积分布函数:P(N < value; shape, scale)。形状和比例参数必须为正实数。value 必须为非负实数。

laplace_cdf(mean, scale, value) -> double()

计算给定均值和比例参数的拉普拉斯累积分布函数:P(N < value; mean, scale)。均值和 value 必须为实数,比例参数必须为正值(所有类型均为 DOUBLE)。

normal_cdf(mean, sd, value) -> double()

计算给定均值和标准差 (sd) 的正态累积分布函数:P(N < value; mean, sd)。均值和 value 必须为实数,标准差必须为正实数(所有类型均为 DOUBLE)。

poisson_cdf(lambda, value) -> double()

计算给定 lambda(均值)参数的泊松累积分布函数:P(N <= value; lambda)。lambda 参数必须为正实数(类型为 DOUBLE),value 必须为非负整数。

weibull_cdf(a, b, value) -> double()

计算给定参数 a、b 的威布尔累积分布函数:P(N <= value)。ab 参数必须为正双精度数,value 也必须为双精度数。

概率函数:inverse_cdf

inverse_beta_cdf(a, b, p) -> double()

计算给定 a、b 参数的贝塔累积分布函数的逆函数,用于累积概率(p):P(N < n)。a、b 参数必须为正实数(所有类型均为 DOUBLE)。概率 p 必须位于区间 [0, 1] 内。

inverse_binomial_cdf(numberOfTrials, successProbability, p) -> int()

计算给定 numberOfTrials 和 successProbability(单次试验的成功概率)的二项式累积分布函数的逆函数,用于累积概率(p):P(N <= n)。successProbability 和 p 必须为 [0, 1] 内的实数,numberOfTrials 必须为正整数。

inverse_cauchy_cdf(median, scale, p) -> double()

计算给定参数中位数和比例(gamma)的柯西累积分布函数的逆函数,用于概率 p。比例参数必须为正双精度数。概率 p 必须为 [0, 1] 区间内的双精度数。

inverse_chi_squared_cdf(df, p) -> double()

计算给定 df(自由度)参数的卡方累积分布函数的逆函数,用于累积概率(p):P(N < n)。df 参数必须为正实数。概率 p 必须位于区间 [0, 1] 内。

inverse_gamma_cdf(shape, scale, p) -> double()

计算给定形状和比例参数的伽马累积分布函数的逆函数,用于累积概率(p):P(N < n)。形状和比例参数必须为正实数。概率 p 必须位于区间 [0, 1] 内。

inverse_f_cdf(df1, df2, p) -> double()

计算给定 df1(分子自由度)和 df2(分母自由度)参数的 F 累积分布函数的逆函数,用于累积概率(p):P(N < n)。分子和分母 df 参数必须为正实数。概率 p 必须位于区间 [0, 1] 内。

inverse_laplace_cdf(mean, scale, p) -> double()

计算给定均值和比例参数的拉普拉斯累积分布函数的逆函数,用于累积概率(p):P(N < n)。均值必须为实数,比例必须为正实数(类型均为 DOUBLE)。概率 p 必须位于区间 [0, 1] 内。

inverse_normal_cdf(mean, sd, p) -> double()

计算给定均值和标准差 (sd) 的正态累积分布函数的逆函数,用于累积概率(p):P(N < n)。均值必须为实数,标准差必须为正实数(类型均为 DOUBLE)。概率 p 必须位于区间 (0, 1) 内。

inverse_poisson_cdf(lambda, p) -> integer()

计算给定 lambda(均值)参数的泊松累积分布函数的逆函数,用于累积概率(p)。它返回 n 的值,使得:P(N <= n; lambda) = p。lambda 参数必须为正实数(类型为 DOUBLE)。概率 p 必须位于区间 [0, 1) 内。

inverse_weibull_cdf(a, b, p) -> double()

计算给定参数 ab 的威布尔累积分布函数的逆函数,用于概率 pab 参数必须为正双精度数。概率 p 必须为 [0, 1] 区间内的双精度数。

统计函数

wilson_interval_lower(successes, trials, z) -> double()

返回伯努利试验过程在由 z 分数 z 指定的置信度下的威尔逊分数区间的下限。

wilson_interval_upper(successes, trials, z) -> double()

返回伯努利试验过程在由 z 分数 z 指定的置信度下的威尔逊分数区间的上限。

三角函数

所有三角函数参数均以弧度表示。请参阅单位转换函数 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()

返回表示非数值的常量。