首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

如何求得每个班分数最后的2名

2013-09-12 
怎么求得每个班分数最后的2名?班级分数A30A50C52D30A84E68A70B32如题怎么按班级分组后求出,分数最底的两名

怎么求得每个班分数最后的2名?
班级    分数
A       30
A       50
C       52
D       30
A       84
E       68
A       70
B       32

如题怎么按班级分组后求出,分数最底的两名
[解决办法]

if OBJECT_ID('tempdb..#temp', 'u') is not null   drop table #temp;
go
create table #temp( [班级] varchar(100), [分数] INT);
insert #temp
select 'A','30' union all
select 'A','50' union all
select 'C','52' union all
select 'D','30' union all
select 'A','84' union all
select 'E','68' union all
select 'A','70' union all
select 'B','32' 

--SQL:
;WITH CTE AS
(
SELECT ROWID=ROW_NUMBER() OVER(PARTITION BY [班级] ORDER BY 分数 DESC),*
from #temp
)
SELECT [班级],分数 FROM CTE
WHERE ROWID <= 2
/*
班级分数
A84
A70
B32
C52
D30
E68
*/

热点排行