学生教务系统 Sql 求助
資深大佬 : LeeReamond 1
如题,教务系统是面向高中生的,现有一需求是统计各班学生每学期排名变化幅度,每学期半年。
目前有一张表是储存学生成绩的总表,全校所有学生成绩都存在其中,表内有如下几项
学生 ID(主键) 成绩上传时间(有索引) 成绩值(或排名值) .... 其余项忽略 1 2020-09-30 12:00:00 120 1 2020-10-30 12:00:00 89 1 2020-11-28 12:00:00 130 3 2020-09-30 12:00:00 100 3 2020-11-28 12:00:00 99
需求是,输入一个班级号,比如某年某班,这时候会到另一张表里取出一个集合,其中包含该班所有学生的 ID
然后希望在一个查询里,输入这个 ID 的集合,到成绩总表里选出对应的学生在指定周期内第一次和最后一次成绩的差值,希望得到的输出表如下:
> select ... from ... where student_id = [1,2,3,4,5,6,7,8...] and 周期 between 2020-01-01 and 2020-12-31 > 学生 ID 差值 1 10 3 -1
请问这个需求能在一条 SQL 语句中实现吗?
目前的做法是交给业务端,针对每名学生发起一次请求,获取其个人的前后差值,但是一个班 40 名学生就要获取 40 次,太慢了
大佬有話說 (6)
