“hive”来自多个列的最大列值

lsmepo6l  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(378)

我有一种情况,我需要找到3个计算字段的最大值,并将其存储在另一个字段中,是否可以在一个sql查询中这样做?下面是一个例子

  1. SELECT
  2. Income1, Income1 * 2% as Personal_Income, Income2, Income2 * 10% as Share_Income, Income3, Income3 * 1% as Job_Income, Max(Personal_Income, Share_Income, Job_Income) From Table

我试过的一种方法是计算个人收入,分享收入,第一次和第二次的工作收入

  1. Select Case when Personal_income > Share_Income and Personal_Income > Job_Income then Personal_income when Share_income > Job_Income then Share_income Else Job_income as the greatest_income

但是这需要我在一个十亿行的表上做两次扫描,我怎样才能避免这种情况,并且一次就完成呢?非常感谢您的帮助。

lc8prwob

lc8prwob1#

你可以用 greatest 这将导致给定行的多个列中的最大值。

  1. select greatest(Income1*1.02, Income2*1.1, Income3*1.01) as greatest_Income
  2. From Table

注意:这不是聚合函数,其他列可以包含在 select 根据需要。

相关问题