मुझे लगता है कि इससे आपको वांछित परिणाम मिलेगा। ध्यान दें कि मैं उन मामलों को ठीक से संभालता हूं जहां लक्षित विजेता दूसरे विजेता के साथ अंक के लिए बंधे होते हैं। (दोनों को एक ही पद मिलता है)।
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