mysql 如何查询学生在班级中的排名

 select ag.id,ag.class,ag.avggrade,@rank:=@rank +1 rank from

(select s.id,s.class,g.avggrade from (select id,class from student where class = '软件工程') s  //这里是子查询,从学生表中选出需要的学生id,并且指示班级是软件工程,注意select 前面有一个括号,这里是将直到倒数第二行都看做一个表!

join  (select student_id,avg(grade) avggrade from grade group by student_id) g //将前面选出来的学生表s与成绩表中所得到的学生id对应的平均成绩进行表连接

on s.id = g.student_id

order by avggrade desc) ag, //,注意要在该表中实现平均成绩的排序,以便后面rank能正常表示排名

(select @rank:=0) r; // 初始化rank 为 0

 

 

你可能感兴趣的:(mysql)