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। हो सकता है कि यह भविष्य के रिलीज में हो। हालांकि विचार के लिए धन्यवाद।