加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2021-05-22 01:18:17 所属栏目:MsSql教程 来源:网络整理
导读:在SQL Server 2008中,我使用RANK()OVER(PARTITION BY Col2 ORDER BY Col3 DESC)来返回带有RANK的数据集.但是我为每个分区都有数百条记录,因此我将获得1,2,3 …… 999等级的值.但是我想在每个PARTITION中最多只有2个RANK. 例: ID Name Score Subject1 Joe

在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()将原始查询放入子查询中,并使用筛选结果的查询对其进行包装.

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读