普通程序员
假设我有下表STUDENTMARKS:
表
其中,姓名+年龄+ ID共同代表一个人。我想获得每个学生在最短时间内获得最高分数的行。首先,我们将优先考虑分数,如果任何学生的分数相同,那么我们将花费最短的时间,并且可以说时间是唯一的。基本上我想要以下输出:
输出量
我尝试下面的SQL,但它不起作用:
SELECT TOP 1 * FROM STUDENTMARKS GROUP BY Name, Age, ID ORDER BY Score DESC, Time ASC
有什么建议吗?
法米
您可以使用 row_number()
select * from
(
select *,row_number() over(partition by name, age, id order by score desc, time asc) as rn
from STUDENTMARKS
)A where rn=1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句