我有一个运动事件的SQL表,列出了这样的结果:
比赛:100米冲刺
姓名:John Smith 地点:1
名称:Gabriel Donaldson 地点:2
名称:Alex Sanders 地点:3
比赛:跳高150米
名称:Alex Sanders 地点:1
姓名:John Smith 放置 2
名称:Gabriel Donaldson 地点:3
等等......在一项体育赛事中,不同人的名字可能会被重复用于不同的比赛。在所有比赛中,我如何编写一个SQL查询来排名前10名或25名等排名最高的参赛者?
我应该补充一点,性能不是问题,因为这是供个人使用而不是缩放。
答案 0 :(得分:2)
您可以尝试这样的事情:
SELECT Name, SUM(Place)
FROM yourTable
GROUP BY Name
ORDER BY SUM(Place) ASC
LIMIT 10 -- or 25, or 15, etc.
此查询汇总每位参赛者的排名,然后按降序排列总排名。最佳参赛者的总排名应该最低。