Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

数学函数

acos

引入版本:v1.1.0

返回参数的反余弦。

语法

acos(x)

参数

返回值

返回 x 的反余弦。Float*

示例

使用示例

SELECT acos(0.5);
1.0471975511965974

acosh

Introduced in: v20.12.0

返回反双曲余弦值。

语法

acosh(x)

参数

返回值

返回该角的弧度值。取值范围:0 ≤ acosh(x) < +∞Float64

示例

使用示例

SELECT acosh(1)
0

asin

引入版本:v1.1.0

计算给定参数的反正弦值。 对于 [-1, 1] 范围内的参数,返回值范围为 [-pi() / 2, pi() / 2]

语法

asin(x)

参数

返回值

返回参数 x 的反正弦值 Float64

示例

反函数

SELECT asin(1.0) = pi() / 2, sin(asin(1)), asin(sin(1))
1	1	0.9999999999999999

float32

SELECT toTypeName(asin(1.0::Float32))
Float64

nan

SELECT asin(1.1), asin(-2), asin(inf), asin(nan)
nan	nan	nan	nan

asinh

在 v20.12.0 中引入

返回反双曲正弦值。

语法

asinh(x)

参数

返回值

返回对应的角度 (以弧度表示) 。取值范围:-∞ < asinh(x) < +∞Float64

示例

基本用法

SELECT asinh(0)
0

atan

引入版本:v1.1.0

返回参数的反正切。

语法

atan(x)

参数

返回值

返回 x 的反正切值。Float*

示例

用法示例

SELECT atan(1);
0.7853981633974483

atan2

引入版本:v20.12.0

返回 atan2 值,即欧几里得平面中,从正 x 轴到指向点 (x, y) ≠ (0, 0) 的射线之间的夹角,单位为弧度。

语法

atan2(y, x)

参数

返回值

返回满足 -π < θ ≤ π 的角 θ,单位为弧度。Float64

示例

用法示例

SELECT atan2(1, 1)
0.7853981633974483

atanh

引入于:v20.12.0

返回反双曲正切。

语法

atanh(x)

参数

  • x — 角度的双曲正切值。取值范围:-1 < x < 1。(U)Int*Float*Decimal*(U)Int*Float*Decimal*

返回值

返回以弧度表示的角度。取值范围:-∞ < atanh(x) < +∞ Float64

示例

使用示例

SELECT atanh(0)
0

cbrt

首次引入版本:v1.1.0

返回参数的立方根。

语法

cbrt(x)

参数

返回值

返回 x 的立方根。Float*

示例

使用示例

SELECT cbrt(8);
2

cos

引入版本:v1.1.0

返回该参数的余弦值。

语法

cos(x)

参数

返回值

返回 x 的余弦值。Float*

示例

使用示例

SELECT cos(0);
1

cosh

引入版本:v20.12.0

返回参数的双曲余弦。

语法

cosh(x)

参数

返回值

返回值范围:1 ≤ cosh(x) < +∞ Float64

示例

基本用法

SELECT cosh(0)
1

degrees

在 v22.2.0 中引入

将弧度转换为度数。

语法

degrees(x)

参数

返回值

返回 x 的度数值。Float64

示例

基本用法

SELECT degrees(3.141592653589793)
180

e

引入版本:v1.1.0

返回欧拉常数 (e) 。

语法

e()

参数

  • 无。

返回值

返回欧拉常数 Float64

示例

使用示例

SELECT e();
2.718281828459045

erf

引入版本:v1.1.0

如果 x 是非负数,那么 erf(x/(σ√2)) 表示:对于一个服从正态分布、标准差为 σ 的随机变量,其取值与期望值相差大于 x 的概率。

语法

erf(x)

参数

返回值

返回误差函数值 Float*

示例

3σ 规则

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

erfc

自 v1.1.0 起引入

返回接近 1-erf(x) 的数值,即使 x 很大也不会损失精度。

语法

erfc(x)

参数

返回值

返回余误差函数的值 Float*

示例

使用示例

SELECT erfc(0);
1

exp

引入于:v1.1.0

返回 e 的 x 次幂,其中 x 为传递给该函数的参数。

语法

exp(x)

参数

返回值

返回 e^x。(Float*)

示例

基本用法

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

exp10

Introduced in:v1.1.0

返回给定参数的 10 的幂。

Syntax

exp10(x)

参数

返回值

返回 10^x,类型为 Float*

示例

用法示例

SELECT exp10(2);
100

exp2

Introduced in:v1.1.0

返回给定参数的 2 的幂。

Syntax

exp2(x)

参数

返回值

返回 2^x,类型为 Float*

示例

用法示例

SELECT exp2(3);
8

factorial

引入版本:v22.11.0

计算整数值的阶乘。 0 的阶乘是 1。同样,factorial() 函数对任何负值也都会返回 1。 输入参数的最大正值为 20,值为 21 或更大时将引发异常。

语法

factorial(n)

参数

返回值

以 UInt64 返回输入值的阶乘。对于输入值 0 或任意负值,返回 1。UInt64

示例

使用示例

SELECT factorial(10)
3628800

hypot

引入版本:v20.12.0

返回直角三角形斜边的长度。 hypot 可避免在对非常大或非常小的数值求平方时出现的问题。

语法

hypot(x, y)

参数

返回值

返回直角三角形斜边的长度。Float64

示例

基本用法

SELECT hypot(1, 1)
1.4142135623730951

intExp10

在 v1.1.0 中引入

exp10 类似,但返回 UInt64 数值。

语法

intExp10(x)

参数

返回值

返回 10^xUInt64

示例

使用示例

SELECT intExp10(2);
100

intExp2

引入版本:v1.1.0

exp2 类似,但返回 UInt64 数值。

语法

intExp2(x)

参数

返回值

返回 2^x。UInt64

示例

用法示例

SELECT intExp2(3);
8

isPrime

引入版本:v26.5.0

如果参数是质数,则返回 1,否则返回 0

对于较小的值,使用精确查找 bitmap;对于较大的值,使用确定性的 Miller-Rabin 测试。 对于所有受支持的输入类型,结果都完全准确。

对于更宽的无符号整数类型 (UInt128UInt256) ,请改用 isProbablePrime

语法

isPrime(n)

参数

返回值

如果 n 是质数,则返回 1;否则返回 0UInt8

示例

质数

SELECT isPrime(17)
1

合数

SELECT isPrime(18)
0

较大的 UInt64 质数

SELECT isPrime(18446744073709551557)
1

最大 UInt64

SELECT isPrime(18446744073709551615)
0

isProbablePrime

引入版本:v26.5.0

如果参数很可能是质数,则返回 1;如果它确定是合数,则返回 0

对于 UInt8UInt16UInt32UInt64,结果是精确的,并且与 isPrime 一致。rounds 参数会被忽略。

对于 UInt128UInt256,返回值为 1 时仅表示概率意义上的结果。可选的 rounds 参数控制 执行多少轮 Miller-Rabin 测试: 轮数越多,误报的概率越低,但运行时间也会增加。在见证值均匀随机的情况下, 对于固定的合数,误报率的上界为 4^(-rounds);默认值 25 可将该上界控制在 10^-15 以下,最大值 256 则可将其控制在 10^-154 以下。

该函数是确定性的:见证值以 n 为种子生成,因此相同的 (n, rounds) 组合始终会产生 相同的结果。4^(-rounds) 这个上界表示在见证值均匀随机时针对单个输入的概率; 而在我们的确定性种子机制下,它描述的则是输入集合上的一个比例——如果某个合数能够骗过其 见证序列,它就会稳定地返回 1

语法

isProbablePrime(n[, rounds])

参数

  • n — 用于测试是否为质数的无符号整数。UInt8UInt16UInt32UInt64UInt128UInt256
  • rounds — 可选的正整数常量,取值范围为 [1, 256]。表示 UInt128/UInt256 的 Miller-Rabin 测试轮数 (对更小的类型将被忽略) 。默认值为 25UInt8UInt16UInt32UInt64

返回值

如果 n 很可能是质数,则返回 1;如果 n 确定为合数,则返回 0UInt8

示例

小质数

SELECT isProbablePrime(17)
1

小合数

SELECT isProbablePrime(18)
0

最大的 UInt64 质数 (精确结果)

SELECT isProbablePrime(18446744073709551557)
1

梅森质数 M_127 (UInt128)

SELECT isProbablePrime(toUInt128('170141183460469231731687303715884105727'))
1

Curve25519 基域质数 2^255 - 19 (UInt256)

SELECT isProbablePrime(toUInt256('57896044618658097711785492504343953926634992332820282019728792003956564819949'))
1

速度更快、置信度较低的检查:5 轮

SELECT isProbablePrime(toUInt256('57896044618658097711785492504343953926634992332820282019728792003956564819949'), 5)
1

lgamma

引入版本:v1.1.0

返回伽马函数的对数。

语法

lgamma(x)

参数

返回值

返回 x 的伽马函数对数。Float*

示例

使用示例

SELECT lgamma(5);
3.1780538303479458

log

在 v1.1.0 中引入

返回参数的自然对数。

语法

log(x)

别名: ln

参数

返回值

返回 x 的自然对数。Float*

示例

使用示例

SELECT log(10);
2.3025850938475476

log10

引入版本:v1.1.0

返回参数的十进制对数。

语法

log10(x)

参数

返回值

返回 x 的常用对数。Float*

示例

使用示例

SELECT log10(100);
2

log1p

引入版本:v20.12.0

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

语法

log1p(x)

参数

返回值

返回值的范围为:-∞ < log1p(x) < +∞ Float64

示例

使用示例

SELECT log1p(0)
0

log2

引入版本:v1.1.0

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

语法

log2(x)

参数

返回值

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

示例

使用示例

SELECT log2(8);
3

pi

在 v1.1.0 中引入

返回 pi (π)。

语法

pi()

参数

  • 无。

返回值

返回 pi Float64

示例

用法示例

SELECT pi();
3.141592653589793

pow

首次引入版本:v1.1.0

返回 x 的 y 次方。

语法

pow(x, y)

别名: power

参数

返回值

返回 x^y,类型为 Float64

示例

用法示例

SELECT pow(2, 3);
8

proportionsZTest

引入版本:v22.3.0

返回双样本比例 Z 检验的检验统计量,这是一种用于比较两个总体 x 和 y 比例的统计检验。 该函数同时支持合并估计和非合并估计两种标准误估计方法。 在合并版本中,会先对两个比例取平均值,再仅使用这一个比例来估计标准误。 在非合并版本中,则分别使用这两个比例进行估计。

语法

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 — 用于估计标准误的池化方法。可以是 'unpooled' 或 'pooled'。String

返回值

返回一个包含以下内容的元组:z_stat (Z 统计量) 、p_val (P 值) 、ci_low (置信区间下限) 、ci_high (置信区间上限) 。Tuple(Float64, Float64, Float64, 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) │
└────────────────────────────────────────────────────────────────────────────────────┘

radians

首次引入版本:v22.2.0

将角度转换为弧度。

语法

radians(x)

参数

返回值

返回以弧度表示的值 Float64

示例

用法示例

SELECT radians(180)
3.141592653589793

sigmoid

引入版本:v20.1.0

计算 sigmoid 函数:1 / (1 + exp(-x))。sigmoid 函数将任意实数映射到 (0, 1) 区间,常用于机器学习。

语法

sigmoid(x)

参数

返回值

返回输入值的 sigmoid 值,取值范围为 (0, 1)。Float64

示例

基本用法

SELECT sigmoid(0)
0.5

sign

引入版本:v21.2.0

返回实数的符号。

语法

sign(x)

参数

返回值

x < 0 时返回 -1,当 x = 0 时返回 0,当 x > 0 时返回 1Int8

示例

零的符号

SELECT sign(0)
0

正号

SELECT sign(1)
1

负号

SELECT sign(-1)
-1

sin

Introduced in: v1.1.0

返回参数的正弦值。

Syntax

sin(x)

参数

返回值

返回 x 的正弦值。

示例

simple

SELECT sin(1.23)
0.9424888019316975

sinh

首次引入版本:v20.12.0

返回双曲正弦。

语法

sinh(x)

参数

  • x — 角度值 (以弧度为单位) 。取值区间:-∞ < x < +∞。(U)Int*Float*Decimal*

返回值

返回值的取值区间为:-∞ < sinh(x) < +∞。Float64

示例

用法示例

SELECT sinh(0)
0

sqrt

引入版本:v1.1.0

返回参数的平方根。

语法

sqrt(x)

参数

返回值

返回 x 的平方根。Float*

示例

使用示例

SELECT sqrt(16);
4

tan

Introduced in: v1.1.0

返回参数的正切值。

Syntax

tan(x)

参数

返回值

返回 x 的正切值。Float*

示例

使用示例

SELECT tan(0);
0

tanh

引入于:v20.1.0

返回双曲正切。

语法

tanh(x)

参数

返回值

返回值的取值区间为:-1 < tanh(x) < 1 Float*

示例

使用示例

SELECT tanh(0)
0

tgamma

版本引入:v1.1.0

返回伽马函数。

语法

tgamma(x)

参数

返回值

返回伽马函数值 Float*

示例

使用示例

SELECT tgamma(5);
24

widthBucket

引入版本:v23.3.0

返回直方图中 operand 参数所在的桶编号。该直方图包含 count 个等宽桶,覆盖从 lowhigh 的范围。如果 operand 小于 low,则返回 0;如果 operand 大于或等于 high,则返回 count+1。 此外,还提供了一个名为 WIDTH_BUCKET 的不区分大小写别名,以兼容其他数据库。

语法

widthBucket(operand, low, high, count)

别名: width_bucket

参数

返回值

返回整数形式的桶编号。如果 operand < low,则返回 0;如果 operand >= high,则返回 count+1。UInt8/16/32/64

示例

使用示例

SELECT widthBucket(10.15, -8.6, 23, 18)
11
Navigation