數學函數和運算子

數學運算子

運算子

描述

+

加法

-

減法

*

乘法

/

除法(整數除法會執行截斷)

%

模數(餘數)

數學函數

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(字串, 基數) -> bigint()

傳回解譯為基數-radix 數字的 string 值。

ln(x) -> double()

傳回 x 的自然對數。

log2(x) -> double()

傳回 x 的以 2 為底的對數。

log10(x) -> double()

傳回 x 的以 10 為底的對數。

mod(n, m) -> [與輸入相同]()

傳回 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) -> [與輸入相同]()

傳回 0 到 n (不包含) 之間的偽隨機數。

secure_rand() -> double()

這是 secure_random() 的別名。

secure_random() -> double()

傳回範圍在 0.0 <= x < 1.0 之間的密碼學安全隨機值。

secure_random(lower, upper) -> [與輸入相同]()

傳回範圍在 lower <= x < upper 之間的密碼學安全隨機值,其中 lower < upper。

round(x) -> [與輸入相同]()

傳回 x 四捨五入到最接近的整數。

round(x, d) -> [與輸入相同]()

傳回 x 四捨五入到 d 個小數位。

sign(x) -> [與輸入相同]()

傳回 x 的正負號函數,即

  • 如果引數為 0,則為 0,

  • 如果引數大於 0,則為 1,

  • 如果引數小於 0,則為 -1。

對於雙精度浮點數引數,此函數額外傳回

  • 如果引數為 NaN,則為 NaN,

  • 如果引數為 +Infinity,則為 1,

  • 如果引數為 -Infinity,則為 -1。

sqrt(x) -> double()

傳回 x 的平方根。

to_base(x, radix) -> varchar()

傳回 x 的以 radix 為底的表示法。

truncate(x) -> double()

傳回 x 捨去小數點後的位數四捨五入為整數。

truncate(x, n) -> double()

傳回 x 截斷到 n 個小數位。n 可以是負數,以截斷小數點左邊的 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()

傳回在具有指定 bound1bound2 邊界以及 n 個儲存區的等寬長條圖中,x 的儲存區編號。

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 類型)。值必須位於區間 [0, 1] 上。

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

計算具有給定 numberOfTrials 和 successProbability (對於單次試驗) 的 Binomial cdf:P(N < value)。successProbability 必須是 [0, 1] 中的實數值,numberOfTrials 和 value 必須是正整數,且 numberOfTrials 大於或等於 value。

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

計算給定中位數和尺度 (gamma) 參數的柯西累積分布函數 (cdf):P(N; 中位數, 尺度)。尺度參數必須為正雙精度浮點數。數值參數必須為介於 [0, 1] 之間的雙精度浮點數。

chi_squared_cdf(df, value) -> double()

計算給定自由度 (df) 參數的卡方累積分布函數:P(N < value; df)。df 參數必須為正實數,而 value 必須為非負實數 (兩者皆為 DOUBLE 類型)。

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

計算給定 df1 (分子自由度) 和 df2 (分母自由度) 參數的 F 累積分布函數: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()

計算給定累積機率 (p) 的 a, b 參數之貝塔累積分布函數的反函數: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()

計算給定機率 p 的中位數和尺度 (gamma) 參數之柯西累積分布函數的反函數。尺度參數必須為正雙精度浮點數。機率 p 必須為介於 [0, 1] 之間的雙精度浮點數。

inverse_chi_squared_cdf(df, p) -> double()

計算給定累積機率 (p) 的自由度 (df) 參數之卡方累積分布函數的反函數: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()

計算給定累積機率 (p) 的 df1 (分子自由度) 和 df2 (分母自由度) 參數之 F 累積分布函數的反函數: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()

計算給定累積機率 (p) 的平均數和標準差 (sd) 之常態累積分布函數的反函數:P(N < n)。平均數必須為實數值,而標準差必須為正實數值 (皆為 DOUBLE 類型)。機率 p 必須介於 (0, 1) 區間內。

inverse_poisson_cdf(lambda, p) -> integer()

計算給定累積機率 (p) 的 lambda (平均數) 參數之卜瓦松累積分布函數的反函數。它會傳回 n 的值,使得:P(N <= n; lambda) = p。lambda 參數必須為正實數 (DOUBLE 類型)。機率 p 必須介於 [0, 1) 區間內。

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

計算給定機率 p 的參數 ab 之韋伯累積分布函數的反函數。ab 參數必須為正雙精度浮點數值。機率 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 是否為非數值 (Not-a-Number)。

nan() -> double()

傳回表示非數值 (Not-a-Number) 的常數。