SQL Server 2008 में, मैं RANK() OVER (PARTITION BY Col2 ORDER BY Col3 DESC)
डेटा सेट को वापस करने के लिए उपयोग कर रहा हूं RANK
। लेकिन मेरे पास प्रत्येक विभाजन के लिए सैकड़ों रिकॉर्ड हैं, इसलिए मुझे रैंक 1, 2, 3 ...... 999 से मान मिलेगा। लेकिन मैं RANKs
प्रत्येक में केवल 2 तक चाहता हूं PARTITION
।
उदाहरण:
ID Name Score Subject
1 Joe 100 Math
2 Jim 99 Math
3 Tim 98 Math
4 Joe 99 History
5 Jim 100 History
6 Tim 89 History
7 Joe 80 Geography
8 Tim 100 Geography
9 Jim 99 Geography
मैं चाहता हूं कि परिणाम:
SELECT Subject, Name, RANK() OVER (PARTITION BY Subject ORDER BY Score DESC)
FROM Table
Subject Name Rank
Math Joe 1
Math Jim 2
History Jim 1
History Joe 2
Geography Tim 1
Geography Jim 2
मैं प्रत्येक श्रेणी में केवल 1 और 2 रैंक चाहता हूं। मैं यह कैसे करु?
RANK(2) OVER (PARTITION BY Col2 ORDER B Y Col3) AS Top_2_Ranks
। हो सकता है कि यह भविष्य के रिलीज में हो। हालांकि विचार के लिए धन्यवाद।