找最大中的任意一个

tanshihou 2013-10-14 11:17:19
有这样一个表
学号 班级 成绩
-------------------------
1 1 70
2 1 71
3 1 72
4 2 73
5 2 75
6 2 75

想得到每个班级成绩最高的那个人的学号,如果最高成绩有N个人,任意取其中一个

学号
------
3
6
这里由于学号5,6的成绩一样,所以取5也行,取6也行

谢谢了
...全文
62 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_Nice 2013-10-14
  • 打赏
  • 举报
回复
SELECT  DISTINCT C.学号
FROM    dbo.TB AS B
        CROSS APPLY ( SELECT TOP ( 1 )
                                A.学号
                      FROM      TB A
                      WHERE     A.班级 = B.班级
                   ORDER BY 班级,成绩 desc ) AS C
                   
/*
3
5*/
ai_li7758521 2013-10-14
  • 打赏
  • 举报
回复
;WITH S AS
(
	SELECT 学号,班级,成绩,row_number() over(partition by 班级 order by 成绩 desc) AS R
	FROM [表名]
)

SELECT 学号,班级,成绩 
FROM S 
WHERE R=1
  • 打赏
  • 举报
回复



create table t
(
学号 int,   
班级 int,  
成绩 int
)

insert into t
select 1 ,    1  ,    70 union all
select 2  ,   1  ,    71 union all
select 3  ,   1   ,   72 union all
select 4  ,   2  ,    73 union all
select 5  ,   2  ,    75 union all
select 6  ,   2 ,     75

select 学号
from
(
select *,
       ROW_NUMBER() over(partition by 班级 order by 成绩 desc) as rownum
from t
)a
where rownum = 1
/*
学号
3
5
*/
唐诗三百首 2013-10-14
  • 打赏
  • 举报
回复

select 学号,班级,成绩
 from (select 学号,班级,成绩,
              row_number() over(partition by 班级 order by 成绩 desc) 'rn'
       from [表名]) t
where rn=1
  • 打赏
  • 举报
回复

select 学号
from
(
select *,
       ROW_NUMBER() over(partition by 班级 order by 成绩 desc) as rownum
from t
)a
where rownum = 1

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧