建立排行榜并显示位置



这让我很困惑。这是一个相当简化的版本,但假设我有一个SQL Server中用户的排行榜,例如:

UserId Total  
1       10  
2        5  
3       20  
4        3  
5       40  
6       15  
7       22  
8        1  
9       18  
10      33

现在我可以很容易地订购这是由总喜欢这样:

Position  UserId  Total  
1            5      40  
2           10      33  
3            7      22   
4            3      20   
5            9      18   
6            6      15  
7            1      10  
8            2       5  
9            4       3   
10           8       1  

但我也想在表中显示一个特定的用户位置,上面和下面两个位置与第七位的用户1类似:

Position UserId  Total  
5           9      18   
6           6      15  
7           1      10  
8           2       5  
9           4       3  

我希望这是有意义的,任何帮助/见解都将不胜感激。

您可以尝试:

SELECT * FROM
  (SELECT ROW_NUMBER() OVER (ORDER BY Total DESC) AS Position, 
          UserId, 
          Total
   FROM your_table) p
WHERE p.Position BETWEEN desiredId-2 AND desiredId+2

最新更新