[英]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.