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
. 향후 릴리스에서 발생할 수 있습니다. 그래도 아이디어 주셔서 감사합니다.