提示
Hive SQL 教程 欢迎使用。提供建议、纠错、催更等加作者微信: gairuo123(备注:sql )和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Hive支持以下内置数学函数,当参数为NULL时,大多数返回NULL:
返回类型 |
用法 |
功能说明 |
---|---|---|
DOUBLE |
round(DOUBLE a) |
四舍五入到整数 |
DOUBLE |
round(DOUBLE a, INT d) |
四舍五入到指定小数位 |
DOUBLE | bround(DOUBLE a) | 半偶数舍入模式,也称为高斯舍入或银行家舍入,如 bround(2.5) = 2, bround(3.5) = 4. |
DOUBLE | bround(DOUBLE a, INT d) | 半偶数舍入模式,也称为高斯舍入或银行家舍入 (as of Hive 1.3.0, 2.0.0). 如: bround(8.25, 1) = 8.2, bround(8.35, 1) = 8.4. |
BIGINT |
floor(DOUBLE a) |
最大值 |
BIGINT |
ceil(DOUBLE a), ceiling(DOUBLE a) |
返回等于或大于 a 的最小 BIGINT 值。 |
DOUBLE |
rand(), rand(INT seed) |
返回一个从0到1均匀分布的随机数(从一行到另一行变化)。指定种子将确保生成的随机数序列是确定性的。 |
DOUBLE |
exp(DOUBLE a), exp(DECIMAL a) |
返回 |
DOUBLE |
ln(DOUBLE a), ln(DECIMAL a) |
返回参数a的自然对数. Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
log10(DOUBLE a), log10(DECIMAL a) |
返回参数a的以10为底的对数. Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
log2(DOUBLE a), log2(DECIMAL a) |
返回参数a的以2为底的对数. Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
log(DOUBLE base, DOUBLE a) log(DECIMAL base, DECIMAL a) |
返回参数a的底对数. Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p) |
返回次方值 |
DOUBLE |
sqrt(DOUBLE a), sqrt(DECIMAL a) |
返回值的平方根. Decimal 类型支持始于 Hive 0.13.0. |
STRING |
bin(BIGINT a) |
以二进制格式返回数字 (见 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_bin). |
STRING |
hex(BIGINT a) hex(STRING a) hex(BINARY a) |
如果参数是 INT 或 binary,hex 将以十六进制格式的字符串形式返回数字. 否则,如果数字是字符串,它会将每个字符转换为其十六进制表示形式,并返回结果字符串。 (见 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_hex, |
BINARY |
unhex(STRING a) |
十六进制的倒数。将每对字符解释为十六进制数,并转换为该数字的字节表示形式. ( |
STRING |
conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base) |
将一个数字从给定的基数转换为另一个基数 (见 http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_conv). |
DOUBLE |
abs(DOUBLE a) |
返回绝对值。 |
INT or DOUBLE |
pmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b) |
返回 |
DOUBLE |
sin(DOUBLE a), sin(DECIMAL a) |
返回a的正弦值(a以弧度为单位)Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
asin(DOUBLE a), asin(DECIMAL a) |
如果-1<=a<=1,则返回 sin(a),否则返回 NULL. Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
cos(DOUBLE a), cos(DECIMAL a) |
cos(a)(a 以弧度为单位)。. Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
acos(DOUBLE a), acos(DECIMAL a) |
如果-1<=a<=1 则 arccos(a),否则返回 NULL.. Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
tan(DOUBLE a), tan(DECIMAL a) |
tan(a) (a 以弧度为单位. Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
atan(DOUBLE a), atan(DECIMAL a) |
arctan(a). Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
degrees(DOUBLE a), degrees(DECIMAL a) |
将a的值从弧度转换为度. Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
radians(DOUBLE a), radians(DOUBLE a) |
将a的值从度转换为弧度。Decimal 类型支持始于 Hive 0.13.0. |
INT or DOUBLE |
positive(INT a), positive(DOUBLE a) |
返回 |
INT or DOUBLE |
negative(INT a), negative(DOUBLE a) |
返回 |
DOUBLE or INT |
sign(DOUBLE a), sign(DECIMAL a) |
将 a 的符号返回为 “1.0”(如果a为正)或“-1.0”(如果a为负),否则返回“0.0”。十进制版本返回INT而不是DOUBLE。Decimal 类型支持始于 Hive 0.13.0. |
DOUBLE |
e() |
返回e的值 |
DOUBLE |
pi() |
返回pi的值,圆周率常数 |
BIGINT | factorial(INT a) | 返回a的阶乘 (as of Hive 1.2.0). a 有效范围是 [0..20]. |
DOUBLE | cbrt(DOUBLE a) | 返回双精度值的立方根 (始于 Hive 1.2.0). |
INT BIGINT |
shiftleft(TINYINT|SMALLINT|INT a, INT b) shiftleft(BIGINT a, INT b) |
向左位移 (始于 Hive 1.2.0). 将a b位置向左移动。对于tinyint、smallint 和 int a返回int。对于bigint a返回bigint。 |
INT BIGINT |
shiftright(TINYINT|SMALLINT|INT a, INT b) shiftright(BIGINT a, INT b) |
符号右移 (始于 Hive 1.2.0). 将a b位置向右移动。对于tinyint、smallint和int a返回int。对于bigint a返回bigint。 |
INT BIGINT |
shiftrightunsigned(TINYINT|SMALLINT|INT a, INT b), shiftrightunsigned(BIGINT a, INT b) |
填零右移 (始于 Hive 1.2.0). 将a b位置向右移动。对于tinyint、smallint和int a返回int。对于bigint a返回bigint。 |
T | greatest(T v1, T v2, ...) | 返回值列表中的最大值 (始于 Hive 1.1.0). 修正了当一个或多个参数为NULL时返回NULL,并且放松了严格的类型限制,与“>”运算符一致 (始于 Hive 2.0.0). |
T | least(T v1, T v2, ...) | 返回值列表中的最小值 (始于 Hive 1.1.0). 修复了当一个或多个参数为NULL时返回NULL的问题,并放宽了严格的类型限制,与“<”运算符一致(始于 Hive 2.0.0). |
INT | width_bucket(NUMERIC expr, NUMERIC min_value, NUMERIC max_value, INT num_buckets) |
通过将expr映射到第i个大小相等的bucket,返回0到num_bucket+1之间的整数。 Buckets are made by dividing [min_value, max_value] into equally sized regions. If expr < min_value, return 1, if expr > max_value return num_buckets+1. See https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions214.htm (始于 Hive 3.0.0) |
Hive 0.11.0中引入了十进制数据类型 (HIVE-2693).
所有常规算术运算符(例如+,-,*,/)和相关的数学UDF(Floor,Ceil,Round等)都已更新为处理十进制类型。 有关受支持的UDF的列表, see Mathematical UDFs in Hive Data Types.
更新时间:2022-03-10 19:08:35 标签:hql sql 数学