sql-server – 将结果限制为前2个排名行

前端之家收集整理的这篇文章主要介绍了sql-server – 将结果限制为前2个排名行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql Server 2008中,我使用RANK()OVER(PARTITION BY Col2 ORDER BY Col3 DESC)来返回带有RANK的数据集.但是我为每个分区都有数百条记录,因此我将获得1,2,3 …… 999等级的值.但是我想在每个PARTITION中最多只有2个RANK.

例:

ID   Name    score    Subject
1    Joe      100      Math
2    Jim      99       Math
3    Tim      98       Math
4    Joe      99       History
5    Jim      100      History
6    Tim      89       History
7    Joe      80       Geography
8    Tim      100      Geography
9    Jim      99       Geography

我希望结果如下:

SELECT Subject,Name,RANK() OVER (PARTITION BY Subject ORDER BY score DESC)
FROM Table
Subject        Name      Rank
Math           Joe        1
Math           Jim        2
History        Jim        1
History        Joe        2
Geography      Tim        1
Geography      Jim        2

我只想在每个类别中排名第1和第2.我该怎么做呢?

解决方法

您可以使用rank()将原始查询放入子查询中,并使用筛选结果的查询对其进行包装.
原文链接:https://www.f2er.com/mssql/79579.html

猜你在找的MsSQL相关文章