假设有表如下(仅作示例):

create table dbo.Score
(
      ScoreId              int                   identity(1,1)
    , Student             nvarchar(max)
    , SubjectId          nvarchar(max)    
    , ScoreNumber    int   
)

insert into Score values('A', '数学', 96)
insert into Score values('A', '语文', 90)
insert into Score values('A', '程序设计', 77)
insert into Score values('B', '数学', 76)
insert into Score values('B', '语文', 66)
insert into Score values('B', '程序设计', 88)
insert into Score values('C', '数学', 60)
insert into Score values('C', '语文', 80)
insert into Score values('C', '程序设计', 66)

要求对每个学科中分数进行排序,如下图:

数据集分组并且组内部排序

可用SQL Server 2005中新的function:

select Student	, SubjectId	, ScoreNumber	, row_number() over (partition by SubjectId order by ScoreNumber desc) as [Rank]
  from Score

加上where 语句可以筛选出每学科前几名学生。

相关文章:

  • 2021-08-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-07
  • 2022-01-01
  • 2021-11-26
  • 2021-07-08
猜你喜欢
  • 2022-12-23
  • 2022-01-01
  • 2022-12-23
  • 2021-04-06
  • 2021-08-04
  • 2022-12-23
相关资源
相似解决方案