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;