Мисля, че това ще ви даде желания резултат. Имайте предвид, че правилно се справям със случаите, при които целевият победител е равен на точки с друг победител. (И двамата получават една и съща позиция).
SELECT COUNT(*) + 1 AS Position
FROM myTable
WHERE Points > (SELECT Points FROM myTable WHERE Winner = 'Sally')
Редактиране :
Бих искал да „включа“ Игнасио Васкес-Абрамс ' отговор, който по няколко начина е по-добър от горния.
Например позволява изброяване на всички (или няколко) победители и тяхната текуща позиция.
Друго предимство е, че позволява изразяване на по-сложно условие за да посочи, че даден играч е пред друг (вижте по-долу). Четене на incrediman Коментарът на , че няма да има "връзки", ме подтикна да разгледам това; заявката може да бъде леко променена, както следва, за да се справи със ситуацията, когато играчите имат еднакъв брой точки (на такива играчи преди е била дадена същата стойност на позицията, сега стойността на позицията е допълнително обвързана с техните относителни начални стойности).
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