SQL 开窗函数

declare @t as table
(
 FCourse varchar(10),
 FScore  decimal(4,1),
 FType   varchar(10)
)

insert into @t(FCourse,FScore,FType)
values
('语文',95,'文科'),
('数学',90,'理科'),
('英语',90,'文科'),
('政治',88,'文科'),
('历史',87,'文科'),
('地理',86,'文科'),
('物理',85,'理科'),
('化学',85,'理科'),
('生物',70,'文科'),
('体育',100,'其他')
基础数据
select * from @t

 

ROW_NUMBER() 

select 
 row_number() over(order by FScore desc) as FIndex,
 FCourse,
 FScore,
 FType
from @t 

 

 RANK()

select 
 rank() over(order by FScore desc) as FIndex,
 FCourse,
 FScore,
 FType
from @t

 

DENSE_RANK()

select 
 dense_rank() over(order by FScore desc) as FIndex,
 FCourse,
 FScore,
 FType
from @t

 

  ROW_NUMBER() OVER( partition by )

select 
 row_number() over(partition by FType order by FScore desc) as FIndex,
 FCourse,
 FScore,
 FType
from @t

 

select *
from (
 select 
   row_number() over(partition by FType order by FScore desc) as FIndex,
   FCourse,
   FScore,
   FType
 from @t
) as a
where FIndex=1

 

 

posted @ 2020-04-13 23:48  茗::流  阅读(98)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。