参考文章:https://www.cnblogs.com/qingyunzong/p/8744593.html; https://blog.csdn.net/liu123641191/article/details/80845411
首先,放一个结构图:
一、数学函数
1、round(四舍五入):
round(45.926, 2) --> 45.93 // 四舍五入保留两位小数
round(45.926, 1) --> 45.9 //四舍五入保留一位小数
round(45.926, 0) --> 46.0
round(45.926, -1) --> 50.0
round(45.926, -2) --> 0.0
2、ceil(向上取整):
ceil(45.9) --> 46
3、floor(向下取整):
floor(45.9) --> 45
二、字符函数
1、lower(转小写):
2、upper(转大写):
hive> select lower('Hello World'), upper('Hello World');
OK
hello world HELLO WORLD
3、length(字符串长度,字符数):
hive> select length('Hello world'), length('你好');
OK
11 2
3、concat(字符串拼接):
hive> select concat('Hello', ' world');
OK
Hello World
5、substr(求子串):
substr(a,n):从字符串a中,第n位开始取,取右边所有的字符。
substr(a,m,n):从字符串a中,第m位开始取,取n个字符。
注意:字符串中的空格也算占用一个字符。
6、trim(去前后空格):
hive> select substr(' Hello World ', 3);
OK
Hello World
7、lpad(左填充):
8、rpad(右填充):
hive> select lpad('abcd', 10, '*'), rpad('abcd',10,'*');
OK
******abcd abcd******
三、收集函数
1、size(返回map集合的个数):
格式:size(map(<key,value>,<key,value))
四、转换函数
1、cast(转换数据类型):
hive> select cast(1 as float);
OK
1.0
hive> select cast('2018-06-28' as date);
OK
2018-06-28
五、日期函数
1、to_date(从一个字符串中取出为日期的部分):
hive> select to_date('2018-06-28 17:19:36');
OK
2018-06-28
2、year、month、day(从一个日期中取出相应的年、月、日):
hive> select year('2018-06-28 17:19:36'),month('2018-06-28 17:19:36'),day('2018-06-28 17:19:36');
OK
2018-06-28
3、weekofyear(返回输入日期在该年中是属于第几个星期):
hive> select weekofyear('2018-06-28 17:20:33');
OK
26
4、date_add(在一个日期基础上增加天数):
5、date_sub(在一个日期基础上减去天数):
hive> select date_add('2018-08-21 18:00:36', 2),date_sub('2021-07-15 08:00:00',2);
OK
2018-08-23 2021-07-13
六、条件函数
1、coalesce(从左到右返回第一个不为null的值):
2、case...when...(条件表达式):
语法格式:case A when B then C [when D then E]* [else F] end
解释:对于A来说,如果判断为B则返回C,如果判断为D则返回E(此处判断条件可为多个),如果以上都不是则返回F。注意,最后还有还有一个end结束符。
例:给员工涨工资,总裁1000,经理800,其他400
select ename,job,sal
case job when 'president' then sal+1000
when 'manager' then sal+800
else sal+400
end
from emp;
七、聚合函数
1、count(返回行数)
2、sum(组内某列求和)
3、min(组内某列最小值)
4、max(组内某列最大值)
5、avg(组内某列平均值)
以薪资sal为例:
select count(*),sum(sal),max(sal),min(sal),avg(sal) from emp;
八、表生成函数
1、explode:把map集合中每个键值对或数组中的每个元素都单独生成一行的形式
九、总结:
支持的内置函数:
支持的聚合函数:![这里写图片描述](https://img-blog.csdn.net/20161219210026155?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3Ryb25neW91bmc4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)