Saya pikir ini akan memberi Anda hasil yang diinginkan. Perhatikan bahwa saya menangani kasus di mana pemenang yang ditargetkan terikat untuk poin dengan pemenang lain. (Keduanya mendapatkan posisi yang sama).
SELECT COUNT(*) + 1 AS Position
FROM myTable
WHERE Points > (SELECT Points FROM myTable WHERE Winner = 'Sally')
Sunting :
Saya ingin "memasang" Ignacio Vazquez-Abrams ' jawaban yang, dalam beberapa hal, lebih baik dari yang di atas.
Misalnya, memungkinkan daftar semua (atau beberapa) pemenang dan posisi mereka saat ini.
Keuntungan lain adalah memungkinkan mengekspresikan kondisi yang lebih rumit untuk menunjukkan bahwa pemain tertentu berada di depan yang lain (lihat di bawah). Membaca incrediman komentar yang menyatakan bahwa tidak akan ada "ikatan" mendorong saya untuk melihat ini; kueri dapat sedikit dimodifikasi sebagai berikut untuk menangani situasi ketika pemain memiliki jumlah poin yang sama (pemain tersebut sebelumnya akan diberi nilai Posisi yang sama, sekarang nilai posisi lebih lanjut terkait dengan nilai Mulai relatif mereka).
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