Sql Oracle获取迭代表的最大元素

Sql Oracle获取迭代表的最大元素,sql,oracle,greatest-n-per-group,Sql,Oracle,Greatest N Per Group,我正在使用这样一张桌子: create table example_table (ID Number(8), Year Number(8), Data Varchar(4)); insert into example_table (ID,Year,Data) ( select 1,2008,1 from dual union select 1,2010,2 from dual union select 2,2014,3 from dual union select 2,2020,4 from d

我正在使用这样一张桌子:

create table example_table (ID Number(8), Year Number(8), Data Varchar(4));
insert into example_table
(ID,Year,Data)
(
select 1,2008,1 from dual union
select 1,2010,2 from dual union
select 2,2014,3 from dual union
select 2,2020,4 from dual union
select 2,2009,5 from dual union
select 3,2003,6 from dual union
select 4,2015,7 from dual union
select 4,2014,8 from dual);
select * from example_table;
身份证件 年 资料 1. 2008 1. 1. 2010 2. 2. 2014 3. 2. 2020 4. 2. 2009 5. 3. 2003 6. 4. 2015 7. 4. 2014 8.
为什么不直接使用聚合呢

select id, max(year), 
       max(data) keep (dense_rank first order by year desc) as data
from t
group by id;

keep
语法是Oracle实现“第一个值”聚合函数的方式。

每组前n名
逻辑需要子查询或其逻辑等价物。看一看:可能是因为oracle的文档非常稀少,我甚至不知道这个功能是否存在。谢谢