# 数值函数
# plus
计算两个值 a
和 b
的和。
plus(a, b)
可以将整数和日期或带时间的日期相加。前一种操作会增加日期中的天数,后一种操作会增加带时间的日期中的秒数。
别名
a + b
(运算符)
# minus
计算两个值 a
和 b
的差。结果始终带有符号。
与 plus
类似,可以从日期或带时间的日期中减去整数。
minus(a, b)
别名
a - b
(运算符)
# multiply
计算两个值 a
和 b
的乘积。
multiply(a, b)
别名:
a * b
(运算符)
# divide
计算两个值 a
和 b
的商。结果类型始终为 Float64 (opens new window)。整数除法由 intDiv
函数提供。
divide(a, b)
除以 0 的结果为 inf
、inf
或 nan
。
别名
a / b
(运算符)
# exp
返回给定参数的 e 的幂。
exp(x)
# log2
返回参数的二进制对数。
log2(x)
# log10
返回参数的十进制对数。
log10(x)
# cos
返回参数的余弦值。
cos(x)
# tan
返回参数的正切值。
tan(x)
# sin
返回参数的正弦值。
sin(x)
# sqrt
返回参数的平方根。
sqrt(x)
# abs
计算 a
的绝对值。如果 a
是无符号类型,则没有影响。如果 a
是有符号类型,则返回一个无符号数。
abs(a)
# floor
返回小于或等于 x
的最大整数。一个整数是 1 / 10N 的倍数,或者是适当数据类型的最近的数,如果 1 / 10N 不是精确的。‘N’ 是一个整数常量,可选参数。默认值为零,表示四舍五入到整数。‘N’ 可以是负数。
floor(x[, N])
x
是任何数值类型。结果是相同类型的数值。对于整数参数,使用负的 N
值进行四舍五入是有意义的(对于非负的 N
,函数不做任何操作)。如果四舍五入导致溢出(例如,floor(-128, -1)),则返回一个与实现相关的结果。
示例
floor(123.45, 1) = 123.4, floor(123.45, -1) = 120
# ceil
返回大于或等于 x
的最小整数。在其他方面,它与 floor
函数相同(参见上文)。
# round
将一个值四舍五入到指定的小数位数。该函数返回指定顺序的最接近的数。如果给定的数与周围的数距离相等,则对于浮点数类型,函数使用银行家舍入法,对于其他数值类型(Decimal),则向远离零的方向四舍五入。
round(expression [, decimal_places])
参数
expression
— 要四舍五入的数。可以是返回数值数据类型的任何表达式。decimal-places
— 整数值。- 如果
decimal-places > 0
,则函数将值四舍五入到小数点右侧。 - 如果
decimal-places < 0
,则函数将值四舍五入到小数点左侧。 - 如果
decimal-places = 0
,则函数将值四舍五入到整数。在这种情况下,可以省略该参数。
- 如果
返回值
与输入数值相同类型的四舍五入数。
示例
使用 Float 类型
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3
┌───x─┬─round(divide(number, 2))─┐ │ 0 │ 0 │ │ 0.5 │ 0 │ │ 1 │ 1 │ └─────┴──────────────────────────┘
使用 Decimal 类型
SELECT cast(number / 2 AS Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3
┌───x─┬─round(CAST(divide(number, 2), 'Decimal(10, 4)'))─┐ │ 0 │ 0 │ │ 0.5 │ 1 │ │ 1 │ 1 │ └─────┴──────────────────────────────────────────────────┘
四舍五入到最接近的数
round(3.2, 0) = 3 round(4.1267, 2) = 4.13 round(22,-1) = 20 round(467,-2) = 500 round(-467,-2) = -500
银行家舍入法
round(3.5) = 4 round(4.5) = 4 round(3.55, 1) = 3.6 round(3.65, 1) = 3.6
# rand32
返回一个均匀分布在所有可能的 UInt32 数字范围内的随机 UInt32 数字。使用线性同余生成器。
# randNormal
返回从正态分布 (opens new window)中抽取的随机 Float64 数字。
randNormal(mean, variance)
参数
mean
-Float64
- 分布的均值,variance
-Float64
- 分布的方差。
返回值
- 随机数。
- 类型:Float64。
示例
SELECT randNormal(10, 2) FROM numbers(5)
┌──randNormal(10, 2)─┐
│ 13.389228911709653 │
│ 8.622949707401295 │
│ 10.801887062682981 │
│ 4.5220192605895315 │
│ 10.901239123982567 │
└────────────────────┘