数据库算法问题

前提条件:

学生N人,不确定具体人数,且可变
M天

考试M天,每一天的学生成绩记录到一张表中。考试M天过后,如何得出总成绩前20的学生。

补充:每张表,数据量很大

阅读 1.5k
2 个回答

假设每天的成绩表结构都一样,则可以

select 
    总成绩.学生name , sum(总成绩.分数)
from (
   select * from 第1天的考试成绩 union all
   select * from 第2天的考试成绩 union all
    -- ...
   select * from 第m天的考试成绩 
) as 总成绩

group by 总成绩.学生name
order by sum(总成绩.分数)
limit 20

按学生编号分组求和,Order BY,LIMIT 20

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