新手请教如何用SQL在成绩表和学生表通过学生名字查询某人的总分和在全年级的排名

单表我是会查询的,由于需要和学生表链表查询,我就不会了,学生表和成绩变中学生ID是一致的,只有学生表中有学生名字,成绩表中有各科成绩,以学生ID关联,所以如果我要查“张三”的总成绩并得出他在全年级的排名,要怎么查?请教前辈们

阅读 3.5k
2 个回答

zhangshanScore = select sum(score) from 成绩 g inner join 学生 s g.student_id = s.id where s.id = 学生id;

select count(*) + 1 as 排名 from (select sum(score) from 成绩 group by student_id having sum(score) > zhangshanScore) as a;
排名是查询表内分数比他多的人数+1

SELECT b.rank,c.score FROM (
SELECT count(*)+1 as 'rank' FROM (
SELECT id,u.score FROM 学生表 i LEFT JOIN (
SELECT id,SUM(score)as score FROM 成绩表 GROUP BY id
)u ON u.id=i.id ORDER BY u.score DESC
) a WHERE a.score>(SELECT sum(score) FROM 成绩表 WHERE id=1)
) b
LEFT JOIN (
SELECT sum(score)as score FROM 成绩表 WHERE id=1
) c on 1=1

应该是可以一步到位的,试一试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题