mysql创建视图遇到问题

图片说明

我有一个上面的表,下面是我想要的视图,年级 专业 学院是范围
求大神帮忙!!!

select a.学号,a.年级,a.学院,a.专业 ,a.学习成绩 ,b.学习专业排名 , a.德育成绩,c. 德育专业排名 from 表 as a
left join (select 学号,学习成绩 ,row_number() as 学习专业排名 from 表 order by 学习成绩 desc) as b on b.学号 = a.学号
left join (select 学号,学习成绩 ,row_number() as 德育专业排名 from 表 order by 学习成绩 desc) as c on c.学号 = a.学号

兄弟你转换下,绝对o K,别忘了采纳啊

图片说明
第一张图为查询效果,
图片说明
第二张图为表结构

下面则是参考查询语句
select mm.stuNumber as '学号',
mm.praent_grade as '年级',
mm.praent_college as '学院',mm.praent_major as '专业',
mm.score as '学习成绩',
mm.groupScore as '学习专业排名',
nn.meScore as '德育成绩',
nn.groupScore as '德育成绩排名' from (
select
a.stuNumber,
@group_Score:=case when @praent_grade=a.grade and @praent_college=a.college and @praent_major=a.major then @group_Score+1 else 1 end as groupScore,
@praent_grade:=a.grade as praent_grade,
@praent_college:=a.college as praent_college,
@praent_major:=a.major as praent_major,
a.score
from student a,(select @group_Score:=1,@praent_grade:='',@praent_college:='',@praent_major:='') as b
order by a.grade,a.college,a.major,a.score ) as mm
inner join (
select
a.stuNumber,
@group_Score:=case when @praent_grade=a.grade and @praent_college=a.college and @praent_major=a.major then @group_Score+1 else 1 end as groupScore,
@praent_grade:=a.grade as praent_grade,
@praent_college:=a.college as praent_college,
@praent_major:=a.major as praent_major,
a.meScore
from student a,(select @group_Score:=1,@praent_grade:='',@praent_college:='',@praent_major:='') as b
order by a.grade,a.college,a.major,a.meScore) as nn on nn.stuNumber=mm.stuNumber

记得采纳啊,兄弟

兄弟,我按照你的那个代码跑的结果是有问题的图片说明
如图所示,相同的年级学院专业并没有正确的进行排名,第二点,我最希望的是能够产生一个视图供后续使用,@产生的临时变量在生成视图时会出现问题的,还是非常感谢你的

oracle的语法,不知道能不能用:

select 学号,年级,学院,专业,学习成绩
,dense_rank() over(partion by 年级,学院,专业 order by 学习成绩 desc) as 学习专业排名
,德育成绩
,dense_rank() over(partion by 年级,学院,专业 order by 德育成绩 desc) as 德育专业排名
from 表

其中dense_rank可以根据不同的排名需要换成rank或row_number