Hive 在订单后从组中选择第一行

Hive 在订单后从组中选择第一行,hive,impala,Hive,Impala,我的桌子是这样的: appl_db_srvr_xref_id secrty_ctl_id assmt_dt cmdb_id secrty_ctl_elemnt_impmtn_cd 180 43 1/1/2018 227 N 180 43 9/31/2018 227 Y 179 28

我的桌子是这样的:

appl_db_srvr_xref_id  secrty_ctl_id assmt_dt  cmdb_id  secrty_ctl_elemnt_impmtn_cd
       180                 43       1/1/2018    227         N 
       180                 43       9/31/2018   227         Y
       179                 28       1/1/2018    710         N
       179                 29       2/2/2018    710         N
       179                 43       3/3/2018    710         N
我需要的是按日期进行分组(appl_db_srvr_xref_id、secrty_ctl_id和cmdb_id),并返回最新的行。因此,在本例中,我想返回:

180   43   227   Y
179   28   710   N
179   29   710   N
179   43   710   N
我尝试的是:

SELECT secrty_ctl_id, 
       appl_db_srvr_xref_id, 
       cmdb_id, 
       assmt_dt 
 FROM tablename 
 GROUP BY 
       secrty_ctl_id, 
       appl_db_srvr_xref_id, 
       cmdb_id 
 ORDER BY assmt_dt desc
使用row_number()分析函数:

select
       secrty_ctl_id, 
       appl_db_srvr_xref_id, 
       cmdb_id, 
       assmt_dt
from
(
SELECT secrty_ctl_id, 
       appl_db_srvr_xref_id, 
       cmdb_id, 
       assmt_dt,
       row_number() over (partition by appl_db_srvr_xref_id, secrty_ctl_id, cmdb_id order by assmt_dt desc) rn
 FROM tablename 
 )s
where rn=1;