sql-server-2005 - 使用 Row_Number() - 查找最大注册

标签 sql-server-2005 tsql

我想使用 row_number() 函数找出每门类(class)的最大试卷注册数。

注册表

CourseID  StudentName  PaperCode

 101    David   10001
 101    David   20000
 101    George  10000
 102    Peter   10000
 102    Peter   20000
 102    David   20000

预期的结果可能是

CourseID| StudentName | NumberofRegistration

101       David     2
102      Peter       2   

我尝试了以下查询,但无法扩展它以获得所需的结果。

select 

         CourseID,
         StudentName,
         NumberOfRegistration
from

(
  select 
         CourseID,
         StudentName,
         ROW_NUMBER() 
         over( 
              partition by count(papercode)
              order by CourseID asc) as NumberOfRegistration

来自 登记 按 CourseID,StudentName 分组 )x

请帮我完成它。

最佳答案

declare @T table
(
  CourseID int,
  StudentName varchar(10),
  PaperCode int
)

insert into @T values
(101,    'David',   10001),
(101,    'David',   20000),
(101,    'George',  10000),
(102,    'Peter',   10000),
(102,    'Peter',   20000),
(102,    'David',   20000)

select CourseID, StudentName, NumberofRegistration
from
  (
    select CourseID, StudentName, NumberofRegistration,
           row_number() over(partition by CourseID order by NumberofRegistration desc) as rn
    from
      (
        select CourseID, StudentName, count(*) as NumberofRegistration
        from @T
        group by CourseID, StudentName
      ) as T
  ) as T
where rn = 1

关于sql-server-2005 - 使用 Row_Number() - 查找最大注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9697545/

相关文章:

sql - 返回多个结果集的查询

c# - 以编程方式添加 SSIS 连接 - Oracle Provider for OLE DB

sql - SQL Server 2005 中 VARBINARY 字段的大小

database - 召集所有数据库/ORM/数据访问层专家

sql - T-SQL JOIN针对公用表表达式(CTE)

sql - 使用 SQL Server 选择进行更新

sql - SQL Server 2005 中的交叉联接值

c# - 操作数类型冲突 : int is incompatible with uniqueidentifier

sql-server - 在 SQL 中合并和修改 XML

sql-server - 如何在 SQL Server Management Studio 中备份连接