按SQL级别对学生进行排名

iLe*_*ing 7 sql t-sql sql-server

我有这样一张桌子:

Date       StudentName    Score

01.01.09   Alex           100
01.01.09   Tom            90
01.01.09   Sam            70
01.02.09   Alex           100
01.02.09   Tom            50
01.02.09   Sam            100

我需要在不同日期内按分数对结果表中的学生进行排名,如下所示:

Date       Student         Rank

01.01.09   Alex             1
01.01.09   Tom              2
01.01.09   Sam              3
01.02.09   Alex             1
01.02.09   Sam              1
01.02.09   Tom              2

我怎么能在SQL中这样做?

Eri*_*ric 28

您想rank在T-SQL中使用该函数:

select
    date,
    student,
    rank() over (partition by date order by score desc) as rank
from
    grades
order by
    date, rank, student
Run Code Online (Sandbox Code Playgroud)

神奇在于该over条款.看,它按date顺序拆分这些排名,然后按顺序排列这些子集score.太棒了,是吗?