大数据之Hive:greatest和least函数
目录背景介绍greatest函数基本用法:简单示例least函数基本用法:简单示例实战需求:有两个字段,第一个字段是creat_time,第二个字段是update_time,现在的需求是如果两列字段有一个为空则取另一列字段的值,如果两列的值均不为空,则取较大的值;背景介绍在工作开发中遇到取两列值中最大的值,当时首先想到的是max函数,因为在java中经常有类似的比较两个数值大小的情况,后来意识到m
背景介绍
在工作开发中遇到取两列值中最大的值,当时首先想到的是max函数,因为在java中经常有类似的比较两个数值大小的情况,后来意识到max是取一列中的最大值,查询其他资料得知需要用到greatest函数,特意把greatest函数和least函数的简单用法总结如下:
greatest函数
基本用法:
greatest(col_a, col_b, …, col_n)比较n个column的大小返回最大值;
若column中有null,返回null,
若某个column中字段类型是string,而其他column字段类型是int/double/float,返回null;
简单示例
select greatest(-1, 0, 5, 8) --8
select greatest(-1, 0, 5, 8, null) --null
select greatest(-1, 0, 5, 8, "dfsf") --null
select greatest("2020-02-26","2020-02-23","2020-02-22") --2020-02-26
select greatest("2020-02-26 20:02:11","2020-02-23 20:02:11","2020-02-22 20:02:11") --2020-02-26 20:02:11
least函数
基本用法:
least(col_a, col_b, …, col_n)比较n个column的大小返回最小值;
若column中有null,返回null,
若某个column中字段类型是string,而其他column字段类型是int/double/float,返回null;
简单示例
select least(-1, 0, 5, 8) -- -1
select least(-1, 0, 5, 8, null) --null
select least(-1, 0, 5, 8, "dfsf") --null
select least("2020-02-26","2020-02-23","2020-02-22") --2020-02-22
select least("2020-02-26 20:02:11","2020-02-23 20:02:11","2020-02-22 20:02:11") --2020-02-22 20:02:11
实战
需求:
有两个字段,第一个字段是creat_time,第二个字段是update_time,现在的需求是如果两列字段有一个为空则取另一列字段的值,如果两列的值均不为空,则取较大的值;
case
when creat_time is null and update_time is not null then update_time
when creat_time is not null and update_time is null then creat_time
when creat_time is not null and update_time is not null then greatest(creat_time,update_time)
else null
end new_time
参考:https://blog.csdn.net/weixin_38750084/article/details/97788821
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)