создать новый столбец на основе максимального значения столбца - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть запрос, который выглядит следующим образом

select max(mytime), type, id from my table where id = 1
group by id, type

Это дает мне результаты, подобные

time              type               id
2018-01-01        green              1
2017-01-03        blue               1
2017-03-03        red                1

Я хочу, чтобы тип был одинаковым на основе максимального значения.Таким образом, потребуется максимальное время для всех похожих идентификаторов в этом случае '1' и скопировать этот тип для всех записей.Это должно выглядеть как

time              type               id
2018-01-01        green              1
2017-01-03        green              1
2017-03-03        green              1

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

вы можете попробовать ниже, используя подзапрос

  select t1.time,(select type from mytable where mytime= (select max(mytime) from mytable
    where id = 1) ) as type,id
     (
     select max(mytime) as time , type, id from mytable
     where id = 1
     group by id, type
      ) t1 
0 голосов
/ 19 февраля 2019

Hive поддерживает оконную функцию first_value(), так что вы можете сделать:

select distinct max(mytime) over (partition by id, type) as mytime,
       first_value(type) over (order by max(mytime) desc) as type,
       id
from my table 
where id = 1
group by id, type;

Это кажется странным.Почему вы хотите избавиться от оригинального типа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...