SQL Server 2008'de, RANK() OVER (PARTITION BY Col2 ORDER BY Col3 DESC)veri kümesini döndürmek için kullanıyorum RANK. Ancak her bölüm için yüzlerce kaydım var, bu yüzden 1., 2., 3. ve 9.999 arasındaki değerleri alacağım. Fakat RANKsher birinde sadece 2 taneye kadar istiyorum PARTITION.
Örnek:
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
Sonucun olmasını istiyorum:
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
Her kategoride sadece 1. ve 2. sırada yer almak istiyorum. Bunu nasıl yaparım?
RANK(2) OVER (PARTITION BY Col2 ORDER B Y Col3) AS Top_2_Ranks. Gelecek sürümlerde olacak olabilir. Yine de fikir için teşekkürler.