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 RANKs
her 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.