跳至主要内容

数学函数

e

返回 ee (欧拉常数).

语法

e()

返回值

类型:Float64.

pi

返回 π\pi (圆周率).

语法

pi()

返回值

类型:Float64.

exp

返回 exe^{x}, 其中 x 是函数的给定参数。

语法

exp(x)

参数

示例

查询

SELECT round(exp(-1), 4);

结果

┌─round(exp(-1), 4)─┐
│ 0.3679 │
└───────────────────┘

返回值

类型:Float*.

log

返回参数的自然对数。

语法

log(x)

别名:ln(x)

参数

返回值

类型:Float*.

exp2

返回 2 的给定参数次方

语法

exp2(x)

参数

返回值

类型:Float*.

intExp2

exp 相似,但返回 UInt64。

语法

intExp2(x)

log2

返回参数的二进制对数。

语法

log2(x)

参数

返回值

类型:Float*.

exp10

返回 10 的给定参数次方。

语法

exp10(x)

参数

返回值

类型:Float*.

intExp10

exp10 相似,但返回 UInt64。

语法

intExp10(x)

log10

返回参数的十进制对数。

语法

log10(x)

参数

返回值

类型:Float*.

sqrt

返回参数的平方根。

sqrt(x)

参数

返回值

类型:Float*.

cbrt

返回参数的立方根。

cbrt(x)

参数

返回值

类型:Float*.

erf

如果 x 非负,则 erf(xσ2)erf(\frac{x}{\sigma\sqrt{2}}) 是一个具有标准差为 σ\sigma 的正态分布的随机变量取值与期望值相差超过 x 的概率。

语法

erf(x)

参数

返回值

类型:Float*.

示例

(三西格玛法则)

SELECT erf(3 / sqrt(2));
┌─erf(divide(3, sqrt(2)))─┐
│ 0.9973002039367398 │
└─────────────────────────┘

erfc

返回一个接近于 1erf(x)1-erf(x) 的数字,而不会在较大的 x 值上损失精度。

语法

erfc(x)

参数

返回值

类型:Float*.

lgamma

返回伽马函数的对数。

语法

lgamma(x)

参数

返回值

类型:Float*.

tgamma

返回伽马函数。

语法

gamma(x)

参数

返回值

类型:Float*.

sin

返回参数的正弦。

语法

sin(x)

参数

返回值

类型:Float*.

示例

查询

SELECT sin(1.23);
0.9424888019316975

cos

返回参数的余弦。

语法

cos(x)

参数

返回值

类型:Float*.

tan

返回参数的正切。

语法

tan(x)

参数

返回值

类型:Float*.

asin

返回参数的反正弦。

语法

asin(x)

参数

返回值

类型:Float*.

acos

返回参数的反余弦。

语法

acos(x)

参数

返回值

类型:Float*.

atan

返回参数的反正切。

语法

atan(x)

参数

返回值

类型:Float*.

pow

返回 xyx^y.

语法

pow(x, y)

别名:power(x, y)

参数

返回值

类型:Float64.

cosh

返回参数的双曲余弦

语法

cosh(x)

参数

  • x — 角度,以弧度表示。值来自区间:<x<+-\infty \lt x \lt +\infty. (U)Int*Float*Decimal*

返回值

  • 值来自区间:1cosh(x)<+1 \le cosh(x) \lt +\infty.

类型:Float64

示例

SELECT cosh(0);

结果

┌─cosh(0)──┐
│ 1 │
└──────────┘

acosh

返回反双曲余弦

语法

acosh(x)

参数

  • x — 角度的双曲余弦。值来自区间:1x<+1 \le x \lt +\infty. (U)Int*Float*Decimal*

返回值

  • 角度,以弧度表示。值来自区间:0acosh(x)<+0 \le acosh(x) \lt +\infty.

类型:Float64

示例

SELECT acosh(1);

结果

┌─acosh(1)─┐
│ 0 │
└──────────┘

sinh

返回双曲正弦

语法

sinh(x)

参数

  • x — 角度,以弧度表示。值来自区间:<x<+-\infty \lt x \lt +\infty. (U)Int*Float*Decimal*

返回值

  • 值来自区间:<sinh(x)<+-\infty \lt sinh(x) \lt +\infty.

类型:Float64

示例

SELECT sinh(0);

结果

┌─sinh(0)──┐
│ 0 │
└──────────┘

asinh

返回反双曲正弦

语法

asinh(x)

参数

  • x — 角度的双曲正弦。值来自区间:<x<+-\infty \lt x \lt +\infty. (U)Int*Float*Decimal*

返回值

  • 角度,以弧度表示。值来自区间:<asinh(x)<+-\infty \lt asinh(x) \lt +\infty.

类型:Float64

示例

SELECT asinh(0);

结果

┌─asinh(0)─┐
│ 0 │
└──────────┘

tanh

返回双曲正切

语法

tanh(x)

参数

  • x — 角度,以弧度表示。值来自区间:<x<+-\infty \lt x \lt +\infty. (U)Int*Float*Decimal*

返回值

  • 值来自区间:1<tanh(x)<1-1 \lt tanh(x) \lt 1.

类型:Float*

示例

SELECT tanh(0);

结果

0

atanh

返回反双曲正切

语法

atanh(x)

参数

  • x — 角度的双曲正切。值来自区间:1<x<1-1 \lt x \lt 1. (U)Int*Float*Decimal*

返回值

  • 角度,以弧度表示。值来自区间:<atanh(x)<+-\infty \lt atanh(x) \lt +\infty.

类型:Float64

示例

SELECT atanh(0);

结果

┌─atanh(0)─┐
│ 0 │
└──────────┘

atan2

返回atan2,以弧度表示的欧几里得平面中的角度,该角度是正 x 轴与到点 (x, y) ≠ (0, 0) 的射线之间的夹角。

语法

atan2(y, x)

参数

返回值

  • 角度 θ 满足 π<0π-\pi \lt 0 \le \pi,以弧度表示。

类型:Float64

示例

SELECT atan2(1, 1);

结果

┌────────atan2(1, 1)─┐
│ 0.7853981633974483 │
└────────────────────┘

hypot

返回直角三角形的斜边长度。Hypot 避免了对非常大或非常小的数字进行平方时可能出现的问题。

语法

hypot(x, y)

参数

返回值

  • 直角三角形斜边的长度。

类型:Float64

示例

SELECT hypot(1, 1);

结果

┌────────hypot(1, 1)─┐
│ 1.4142135623730951 │
└────────────────────┘

log1p

计算 log(1+x)。对于 x 的小值,计算 log1p(x)log(1+x) 更精确。

语法

log1p(x)

参数

返回值

  • 区间内的值:<log1p(x)<+-\infty < log1p(x) \lt +\infty.

类型:Float64

示例

SELECT log1p(0);

结果

┌─log1p(0)─┐
│ 0 │
└──────────┘

sign

返回实数的符号。

语法

sign(x)

参数

  • x — 从 -\infty++\infty 的值。支持 ClickHouse 中的所有数值类型。

返回值

  • -1 用于 x < 0
  • 0 用于 x = 0
  • 1 用于 x > 0

类型:Int8

示例

零值的符号

SELECT sign(0);

结果

┌─sign(0)─┐
│ 0 │
└─────────┘

正值的符号

SELECT sign(1);

结果

┌─sign(1)─┐
│ 1 │
└─────────┘

负值的符号

SELECT sign(-1);

结果

┌─sign(-1)─┐
│ -1 │
└──────────┘

sigmoid

返回sigmoid 函数

语法

sigmoid(x)

参数

  • x — 输入值。区间内的值:<x<+-\infty \lt x \lt +\infty. (U)Int*Float*Decimal*

返回值

  • sigmoid 曲线上对应 0 到 1 之间的值。Float64

示例

查询

SELECT round(sigmoid(x), 5) FROM (SELECT arrayJoin([-1, 0, 1]) AS x);

结果

0.26894
0.5
0.73106

degrees

将弧度转换为度。

语法

degrees(x)

参数

返回值

示例

SELECT degrees(3.141592653589793);

结果

┌─degrees(3.141592653589793)─┐
│ 180 │
└────────────────────────────┘

radians

将度转换为弧度。

语法

radians(x)

参数

返回值

  • 以弧度为单位的值。

类型:Float64

示例

SELECT radians(180);

结果

┌──────radians(180)─┐
│ 3.141592653589793 │
└───────────────────┘

factorial

计算整数的阶乘。适用于所有原生整数类型,包括 UInt(8|16|32|64) 和 Int(8|16|32|64)。返回值类型为 UInt64。

0 的阶乘为 1。同样,对于任何负值,factorial() 函数都返回 1。输入参数的最大正值为 20,输入参数为 21 或更大将导致异常抛出。

语法

factorial(n)

示例

SELECT factorial(10);

结果

┌─factorial(10)─┐
│ 3628800 │
└───────────────┘

width_bucket

返回 operand 所在直方图桶的编号,该直方图具有 count 个等宽桶,跨越从 lowhigh 的范围。如果 operand < low,则返回 0,如果 operand >= high,则返回 count+1

operandlowhigh 可以是任何原生数字类型。count 只能是无符号原生整数,并且其值不能为零。

语法

widthBucket(operand, low, high, count)

别名:WIDTH_BUCKET

示例

SELECT widthBucket(10.15, -8.6, 23, 18);

结果

┌─widthBucket(10.15, -8.6, 23, 18)─┐
│ 11 │
└──────────────────────────────────┘

proportionsZTest

返回双比例 Z 检验的检验统计量 - 一种比较两个总体 xy 中比例的统计检验。

语法

proportionsZTest(successes_x, successes_y, trials_x, trials_y, conf_level, pool_type)

参数

  • successes_x:总体 x 中的成功次数。UInt64
  • successes_y:总体 y 中的成功次数。UInt64
  • trials_x:总体 x 中的试验次数。UInt64
  • trials_y:总体 y 中的试验次数。UInt64
  • conf_level:检验的置信水平。Float64
  • pool_type:合并的选择(估计标准误差的方式)。可以是 unpooledpooledString
注意

对于参数 pool_type:在合并版本中,两个比例被平均,并且只使用一个比例来估计标准误差。在未合并版本中,两个比例分别使用。

返回值

  • z_stat:Z 统计量。Float64
  • p_val:P 值。Float64
  • ci_low:置信区间的下限。Float64
  • ci_high:置信区间的上限。Float64

示例

查询

SELECT proportionsZTest(10, 11, 100, 101, 0.95, 'unpooled');

结果

┌─proportionsZTest(10, 11, 100, 101, 0.95, 'unpooled')───────────────────────────────┐
│ (-0.20656724435948853,0.8363478437079654,-0.09345975390115283,0.07563797172293502) │
└────────────────────────────────────────────────────────────────────────────────────┘