Sql 查询以选择具有最高值的记录
在Microsoft Access 2007中,我有一个包含以下列的表:Sql 查询以选择具有最高值的记录,sql,database,ms-access-2007,Sql,Database,Ms Access 2007,在Microsoft Access 2007中,我有一个包含以下列的表: col1 mmonth yyear col4 a1 5 2013 Pete a1 4 2013 John a1 3 2013 Don a2 7 2013 Elsa a2 8 2012 Rick a3 9 2009 Betty a3 10 2001
col1 mmonth yyear col4
a1 5 2013 Pete
a1 4 2013 John
a1 3 2013 Don
a2 7 2013 Elsa
a2 8 2012 Rick
a3 9 2009 Betty
a3 10 2001 Vera
a3 8 2013 Ronald
通过一个查询,我想访问在mmonth和yyear中数字最高的记录,如下所示:
col1 mmonth yyear col4
a1 5 2013 Pete
a2 7 2013 Elsa
a3 8 2013 Ronald
您可以使用秩函数:
SELECT *
FROM (SELECT *, RANK() OVER (ORDER BY yyear DESC, mmonth DESC) AS rk
FROM some_table) t
WHERE t.rk <= <number of records you want>
这应该可以
你的意思是什么?你能给我上面例子中的值吗?如果你想要排名前五的记录,用5条代替。如果您想要前七名,请将其替换为前七名,以此类推,以获得前三名的结果!!我尝试在表上应用此代码,但该表在yyear列中检索到错误值
with cte as (
select col4,col1,max(month) as mm,max(year) as yy,RANK() over(order by year desc,month desc) as rn from table
group by col1,year,month,col4
)
select col1,yy,mm,col4 from cte where rn <4