各科成绩排序,不分科目进行成绩排序

数据,创建表,查看数据表(代码)~

1、按成绩(不分科目)进行排序,并显示排名,Score 重复时保留名次空缺

select *,RANK()over(order by score desc)名次 from SC 

 
各科成绩排序,不分科目进行成绩排序_第1张图片
 

2、按成绩(不分科目)进行排序,并显示排名,Score 重复时合并名次(并列第…)

select *,DENSE_RANK()over(order by score desc)名次 from SC

 
各科成绩排序,不分科目进行成绩排序_第2张图片
 

3、按各科成绩(分科目)进行排序,并显示排名,Score 重复时保留名次空缺

--ways 1
select * ,
(select count(score)+1 from 
SC B where B.C# = A.C# and B.score > A.score) 名次 from 
SC A order by C#,名次
--ways 2
select *,RANK()over(order by score desc)名次 from SC where C# ='01' union all
select *,RANK()over(order by score desc)名次 from SC where C# ='02' union all
select *,RANK()over(order by score desc)名次 from SC where C# ='03' 

 
各科成绩排序,不分科目进行成绩排序_第3张图片 

3、按各科成绩(分科目)进行排序,并显示排名,重复时合并名次(并列第…)

--ways 1
select * ,
(select count(distinct score)+1 from 
SC B where B.C# = A.C# and B.score > A.score) 名次 from 
SC A order by C#,名次
--ways 2
select *,DENSE_RANK()over(order by score desc)名次 from 
SC where C# ='01' union all
select *,DENSE_RANK()over(order by score desc)名次 from 
SC where C# ='02' union all
select *,DENSE_RANK()over(order by score desc)名次 from 
SC where C# ='03' 

 
各科成绩排序,不分科目进行成绩排序_第4张图片

你可能感兴趣的:(SQL,server,笔记,sql,数据库,sqlserver)