Je pense que cela vous donnera le résultat souhaité. Notez que je gère correctement les cas où le gagnant ciblé est à égalité de points avec un autre gagnant. (Les deux obtiennent la même position).
SELECT COUNT(*) + 1 AS Position
FROM myTable
WHERE Points > (SELECT Points FROM myTable WHERE Winner = 'Sally')
Modifier :
Je voudrais "brancher" Ignacio Vazquez-Abrams ' réponse qui, à plusieurs égards, est meilleure que la précédente.
Par exemple, elle permet de lister tous (ou plusieurs) les gagnants et leur position actuelle.
Un autre avantage est qu'elle permet d'exprimer une condition plus compliquée pour indiquer qu'un joueur donné est en avance sur un autre (voir ci-dessous). Lire incrediman Le commentaire de à l'effet qu'il n'y aura pas de "liens" m'a incité à me pencher sur la question ; la requête peut être légèrement modifiée comme suit pour gérer la situation où les joueurs ont le même nombre de points (ces joueurs auraient auparavant reçu la même valeur de position, maintenant la valeur de position est davantage liée à leurs valeurs de départ relatives).
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