Hive 从配置单元中的表中拾取最新的2条记录
团队,我这里有一个场景。 我需要通过Hql选择2条最新记录 我试过rownumber,但似乎没有达到预期效果Hive 从配置单元中的表中拾取最新的2条记录,hive,hiveql,top-n,Hive,Hiveql,Top N,团队,我这里有一个场景。 我需要通过Hql选择2条最新记录 我试过rownumber,但似乎没有达到预期效果 Select A.emp_ref_i, A.last_updt_d, A.start_date, case when A.Last_updt_d=max(A.Last_updt_d) over (partition by A.emp_ref_i) and A.start_date=max(a.start_date) over (partition by A.emp_ref_i) the
Select
A.emp_ref_i,
A.last_updt_d,
A.start_date,
case when A.Last_updt_d=max(A.Last_updt_d) over (partition by A.emp_ref_i)
and A.start_date=max(a.start_date) over (partition by A.emp_ref_i)
then 'Y' else 'N' end as Valid_f,
a.CHANGE
from
(
select
distinct(emp_ref_i),
last_updt_d,
start_date,
CHANGE
from
PR) A
当前正在将输出作为
EMP_REF_I LAST_UPDT_D start_date Valid_f CHANGE
1 123 3/29/2020 2/3/2019 Y CHG3
2 123 3/30/2019 2/4/2018 N CHG2
3 123 3/29/2019 2/4/2018 N CHG1
but required:
EMP_REF_I LAST_UPDT_D start_date Valid_f CHANGE
1 123 3/29/2020 2/3/2019 Y CHG3
2 123 3/30/2019 2/4/2018 N CHG2
使用行号和筛选器:
select s.emp_ref_i,
s.last_updt_d,
s.start_date,
case when rn=1 then 'Y' else 'N' end Valid_f,
s.change
from
(
Select
A.*,
row_number() over(partition by A.emp_ref_i order by a.Last_updt_d desc, a.start_date desc) rn
from (...) A
)s
where rn<=2;
使用行号和筛选器:
select s.emp_ref_i,
s.last_updt_d,
s.start_date,
case when rn=1 then 'Y' else 'N' end Valid_f,
s.change
from
(
Select
A.*,
row_number() over(partition by A.emp_ref_i order by a.Last_updt_d desc, a.start_date desc) rn
from (...) A
)s
where rn<=2;
大家好,有什么建议吗?大家好,有什么建议吗?听起来很完美。。。谢谢救世主。。上面还有更大的问题,但这是解决问题的起点。。再次感谢。。更多听起来很完美。。。谢谢救世主。。上面还有更大的问题,但这是解决问题的起点。。再次感谢。。还有更多