Hive函数大全(含例子)之数学函数(Mathematical Functions)

这篇博客详细介绍了Hive中的数学函数,包括四舍五入、高斯舍入、取整、随机数生成、指数、对数、三角函数、进制转换等,并给出了相应的函数用法和示例,帮助用户理解并运用这些函数。
摘要由CSDN通过智能技术生成

为了方便测试,创建了dual表,该表只有一个字段以及只有一行数据,建表语句如下:

CREATE TABLE dual (
  x INT
)

函数名称:round(DOUBLE a),返回类型:DOUBLE

返回数字 a 四舍五入后的值

select round(1.5) from dual;  -- 结果为 2
select round(1.1) from dual;  -- 结果为 1

函数名称:round(DOUBLE a, INT d),返回类型:DOUBLE

返回数字 a 四舍五入到小数点后 d 位的值

select round(1.15, 1) from dual;  -- 结果为 1.2
select round(1.12, 1) from dual;  -- 结果为 1.1
select round(1.12, 3) from dual;  -- 结果为 1.12
select round(1.12, 0) from dual;  -- 结果为 1.0
select round(1.12, -1) from dual;  -- 结果为 0.0

函数名称:bround(DOUBLE a),返回类型:DOUBLE

返回数字 a 高斯舍入后的值

高斯舍入也称银行家舍入,简单的说就是四舍六入五考虑,五后非空就进一,五后为空看奇偶,五前为偶应舍去,五前为奇要进一

-- 四舍
select bround(1.4) from dual;  -- 结果为 1.0
-- 六入
select bround(1.6) from dual;  -- 结果为 2.0
-- 五后非空就进一
select bround(1.51) from dual;  -- 结果为 2.0
-- 五前为偶应舍去
select bround(2.5) from dual;  -- 结果为 2.0
-- 五前为奇要进一
select bround(3.5) from dual;  -- 结果为 4.0

函数名称:bround(DOUBLE a, INT d),返回类型:DOUBLE

返回数字 a 高斯舍入到小数点后 d 位的值

-- 四舍
select bround(1.14, 1) from dual;  -- 结果为 1.1
-- 六入
select bround(1.16, 1) from dual;  -- 结果为 1.2
-- 五后非空就进一
select bround(1.151, 1) from dual;  -- 结果为 1.2
-- 五前为偶应舍去
select bround(1.25, 1) from dual;  -- 结果为 1.2
-- 五前为奇要进一
select bround(1.35, 1) from dual;  -- 结果为 1.4

函数名称:floor(DOUBLE a),返回类型:BIGINT

对数字 a 向下取整

select floor(1.1) from dual;  -- 结果为 1
select floor(1.6) from dual;  -- 结果为 1
select floor(-1.1) from dual;  -- 结果为 -2
select floor(-1.6) from dual;  -- 结果为 -2

函数名称:ceil(DOUBLE a), ceiling(DOUBLE a),返回类型:BIGINT

对数字 a 向上取整,ceil同ceiling

select ceil(1.1) from dual;  -- 结果为 2
select ceil(1.6) from dual;  -- 结果为 2
select floor(-1.1) from dual;  -- 结果为 -1
select floor(-1.6) from dual;  -- 结果为 -1

函数名称:rand(), rand(INT seed),返回类型:DOUBLE

如果 seed 不指定,则返回0到1之间的随机数,如:

select rand() from dual;  -- 结果为 0.9811062452094043

如果 seed 指定了,随机数是确定的,如:

select rand(2) from dual;  -- 结果为 0.7311469360199058
select rand(2020) from dual;  -- 结果为 0.6188119599189963
select rand(20201231) from dual;  -- 结果为 0.9412005456293369

一般使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值