使用SQL排名

时间:2013-05-22 15:42:12

标签: sql ms-access

我正在Access中为棒球相关统计创建数据库(架构)。我想为初学者创建一个查询,将每个团队在某个统计数据中的排名进行排名。例如,我希望看到一个队伍相对于其他队伍在胜利方面的排名。

对于初学者,我有一个带有列组的表格,以及W或

Standings
 Teams     W

我有一个查询可以创建一个等级......但它出现了奇怪的

  SELECT Standings.Teams, Standings.W, ((SELECT Count(*) FROM Standings AS Temp 
WHERE Temp.W >= Standings.W ) AS Wins_Rank
    FROM Standings
    ORDER BY Standings.W;

前几个结果看起来像这样

Teams    W   Win_Rank
Texas    29    2
St.Louis 29    2
NewYork  28    4  
Cincinnati 28  4
Atlanta   27   7
Pittsburg 27   7
Boston    27   7

我觉得应该更像1,1,3,3,5,5,5应该不是吗?有帮助吗?

1 个答案:

答案 0 :(得分:2)

我认为您可以将其更改为:

SELECT Standings.Teams, Standings.W,
       (SELECT Count(*)+1
        FROM Standings AS Temp 
        WHERE Temp.W > Standings.W
       ) AS Wins_Rank
FROM Standings
ORDER BY Standings.W;

注意不平等的变化。将数字计算得更大,然后加1。