如题,教务系统是面向高中生的,现有一需求是统计各班学生每学期排名变化幅度,每学期半年。
目前有一张表是储存学生成绩的总表,全校所有学生成绩都存在其中,表内有如下几项
学生 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 次,太慢了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.