簡體   English   中英

選擇具有最大日期列的記錄在Hive SQL中按主鍵分組

[英]select records with maximum date column grouped by primary keys in Hive sql

我有一個如下表

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

我想選擇所有列和行,以便僅選擇與由primary_key分組的max(act_date)對應的行。 如果有兩條記錄的act_date和value為null,則在act_date列中選擇不為null的行。

上表的最終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; 

感謝任何反饋/輸入

如此清晰,primary_key表示一個唯一字段。 在您的示例中primary_key只是column_name。

這是一種方法

select * from(
select *
       ,row_number() over(partition by t.primary_key order by act_date desc) rnk
 from table
  )x
where x.rnk=1

獲得最大值的另一種方法。

從表組中按primary_key選擇primary_key,max(act_date)作為max_act_date;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM