выбрать записи с максимальным столбцом даты сгруппированы по первичным ключам в Hive SQL - PullRequest
0 голосов
/ 08 февраля 2019

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

primary_key  act_date  C1 C2 C3 C4 ...C50
K1           01-12-18
K1           03-12-18
K1           30-12-18
K2           16-11-18
K3           null
K4           null          
K4           15-11-18

Я хочу выбрать все столбцы и строки так, чтобы выбирались только строки, соответствующие max (act_date), сгруппированные по primary_key.Если есть две записи с нулевым значением act_date и значением, выберите строку, которая не является нулевой в столбце act_date.

Окончательное значение o / p для приведенной выше таблицы должно выглядеть следующим образом

primary_key  act_date  C1 C2 C3 C4 ...C50
K1           30-12-18
K2           16-11-18
K3           null         
K4           15-11-18

Я попробовал следующее, но меня попросили сгруппировать по другим столбцам таблицы, что опять-таки приведет к выводу нескольких строк на ключ primary_key, а это не то, что мне нужно.

select a.* from
(select a.*,
       max(act_date) over() as max_act_date 
  from table a) a
 where (a.act_date = a.max_act_date)
group by a.primary_key; 

Цените любые отзывы / комментарии

Ответы [ 2 ]

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

Другой способ получить максимальное значение.

выбрать primary_key, max (act_date) как max_act_date из группы таблиц primary_key;

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

Точно так, его primary_key подразумевает уникальное поле.В вашем примере primary_key это просто имя столбца.

Вот один из способов сделать это

select * from(
select *
       ,row_number() over(partition by t.primary_key order by act_date desc) rnk
 from table
  )x
where x.rnk=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...