Hive中列(单行)的最大值(以值为单位)

时间:2015-07-13 23:45:54

标签: hive

如何从HIVE中的一行中的不同列中获取最大值?

例如

Row# ID# Col1 Col2 Col3
1    1234  54  67  86
2    5678  89   92 86
...
...

寻找表格的输出:

1234 86
5678 92

谢谢!

1 个答案:

答案 0 :(得分:10)

Hive具有1.1的最大()函数;

select ID, greatest(col1, col2, col3) as greatest_value from table;

如果你的版本没有最大的(),你可以使用case语句:

select ID
, case
   when col1 >  col2 and col1 >  col3 then col1
   when col2 >  col3                  then col2
   else                                    col3
  end as greatest_value
from  table
;

从上到下依次评估语句直到找到值为true的情况,因此不需要在每个when子句中评估两个不等式。