我想这会给你带来理想的结果。请注意,我正确处理目标赢家与另一个赢家平分的情况。(两个职位相同)。
SELECT COUNT(*) + 1 AS Position
FROM myTable
WHERE Points > (SELECT Points FROM myTable WHERE Winner = 'Sally')
编辑
:
我想把插头插上
艾布拉姆斯
“答案在很多方面都比上面的好。
例如,它允许列出所有(或多个)获奖者及其当前职位。
另一个优点是,它允许表达一个更复杂的条件,以表明一个给定的玩家领先于另一个玩家(见下文)。阅读
难以置信的人
他的评论认为不会有“领带”提示我去调查这个问题;这个查询可以稍微修改如下,以处理玩家拥有相同点数的情况(这些玩家以前会得到相同的位置值,现在位置值更进一步与它们的相对起始值相关)。
SELECT w1.name, (
SELECT COUNT(*)
FROM winners AS w2
WHERE (w2.points > w1.points)
OR (W2.points = W1.points AND W2.Start < W1.Start) -- Extra cond. to avoid ties.
)+1 AS rank
FROM winners AS w1
-- WHERE W1.name = 'Sally' -- optional where clause