Максимальное значение столбца «Hive» из нескольких столбцов - PullRequest
0 голосов
/ 06 сентября 2018

Привет: у меня есть ситуация, когда мне нужно найти максимальное значение для 3 вычисляемых полей и сохранить его в другом поле, возможно ли это сделать в одном запросе SQL?Ниже приведен пример

SELECT 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

Один из способов, который я попытался, - это вычислить Personal_Income, Share_Income, Job_Income на первом проходе, а на втором проходе я использовал

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

, но для этого нужно сделать 2сканирует таблицу миллиардов строк. Как мне избежать этого и сделать это за один проход?Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 06 сентября 2018

Начиная с Hive 1.1.0, вы можете использовать функцию greatest(). Этот запрос будет делать в одной таблице сканирования:

select Income1 ,
       Personal_Income ,
       Income2 ,
       Share_Income ,
       Income3 ,
       Job_Income ,
       greatest(Personal_Income, Share_Income, Job_Income ) as greatest_income
from
(
SELECT Income1 ,
       Income1 * 2%  as Personal_Income ,
       Income2 ,
       Income2 * 10% as Share_Income ,
       Income3 ,
       Income3 * 1%  as Job_Income , 
  From Table
)s
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...