hive函数

---------------------hive函数---内置函数、自定义函数
----hive函数:聚合函数
              内置函数:数学函数、字符函数、收集函数、转换函数、日期函数、条件函数
              表生成函数

------数学函数:round/ceil/floor
----四舍五入round
select round(35.546,2),round(35.546,1),round(35.546,0)
        round(35.546,-1),round(35.546,-2);
------35.55,35.5,36.0,40.0,0.0

----向上取整ceil
select ceil(35.5);   --36


------字符函数
---lower、upper
select lower('Hello Hive'),upper('Hello Hive');    ----hello hive   HELLO HIVE

---length
select length('hello hive'),length(‘我是’);   ----10  2

--concat  字符串拼接
select concat('hello' ' hive');  ---hello hive

----substr:取字符串
--substr(a,b) 从a中,第b位开始取,取右边所有的字符
select substr('hello hive',3)   ---llo hive
--substr(a,b,c) 从a中,第b位开始取,取c个的字符
select substr('hello hive',3,5)   ---llo h

--trim去掉前后的空格
--lpad左填充
select lpad('asd',5,'*')   ---**asd
--rpad右填充
select rpad('asd',5,'*')   ---asd**


------收集函数和转换函数
---收集函数size(map(<key,value>,<key1,value1>))
select size(map(1,'a',2,'b'));

--转换函数cast
select cast(1 as float);
select cast('2018-07-18' as date);


---日期函数
--to_date
select to_date('2018-07-18 19:09:34')   --2018-07-18

--year、month、day
select year('2018-07-18 19:09:34'),month('2018-07-18 19:09:34'),day'2018-07-18 19:09:34')   --2018   7   18

--weekofyear
select weekofyear('2018-07-18 19:09:34')   ----这一年的第几周

--datediff 
select datediff('2018-07-18 19:09:34','2017-07-18 19:09:34')   --365

--date_add  (后几天),date_sub (前几天)
select date_add('2018-07-18 19:09:34',2),date_sub('2018-07-18 19:09:34',2)  --2018-07-20    2018-07-16


---条件函数
--coalesce:从左到右返回第一个不为null的值
select comm,sal,coalesce(comm,sal) from emp;
--case... when:条件表达式
--给员工涨工资,总裁1000,经理800,其他500
select ename,job,sal,
    case job
        when 'P' then sal + 1000
        when 'M' then sal + 800
        else sal + 500
    end
from emp;


---聚合函数:count、sum、min、max、avg
select count(*),sum(sal),min(sal),max(sal),avg(sal) from emp;
--表生成函数:explode
select explode(map(1,'a',2,'b'));


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值