Di SQL Server 2008, saya menggunakan RANK() OVER (PARTITION BY Col2 ORDER BY Col3 DESC)untuk mengembalikan kumpulan data dengan RANK. Tapi saya punya ratusan catatan untuk setiap partisi, jadi saya akan mendapatkan nilai dari peringkat 1, 2, 3 ...... 999. Tapi saya hanya ingin RANKsmasing-masing 2 orang PARTITION.
Contoh:
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
Saya ingin hasilnya:
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
Saya hanya ingin peringkat 1 dan 2 di setiap kategori. Bagaimana saya melakukan ini?
RANK(2) OVER (PARTITION BY Col2 ORDER B Y Col3) AS Top_2_Ranks. Mungkin itu akan terjadi di rilis mendatang. Terima kasih untuk idenya.