---------------------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'));