Hive学习笔记:多列求最大值、最小值

发布时间 2023-10-23 15:21:24作者: Hider1214

一、最大值

当在 Hive 中需要对多列数据求最大值时,可以使用函数 greatest(a, b, c, d) 实现。

select greatest(a, b, c) from 
(
	select 10 as a, 
           20 as b, 
           30 as c
) dd;
-- 结果:30

举个具体栗子:计算用户消费时,如果用户套餐有最低消费129元的话,不满129则按129收费,则计算为:greatest(ARPU, 129)

二、最小值

同理,求多列最小值可使用函数 least(a, b, c, d) 实现。

-- 例子一
select least(a, b, c) from 
(
	select 10 as a, 
           20 as b, 
           30 as c
) dd
-- 结果:10

-- 例子二
select least(a, b, c, d) from 
(
	select 10 as a, 
           20 as b, 
           30 as c,
           null as d
) dd;
-- 结果:null

注意:关注列中的空值 NULLgreatestleast 会判断空值为最大、最小,导致出错。

使用两个函数时,注意需要同样类型的数据,才可进行比较。

三、max和min

取某一列的最大、最小值,可以使用 maxmin 函数实现。

select max(age) as age_max,
       min(age) as age_min
from age_table;

参考链接:hive sql 多行值取最大值、最小值

参考链接:hive中取最大值最小值的函数