参考文章: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集合中每个键值对或数组中的每个元素都单独生成一行的形式
九、总结:
支持的内置函数:
?支持的聚合函数:
?
?
|