请教一条sql的编写

以下数据结构,你如何查询某一日期或之前,学生在某年级的单科最新成绩分数,按学生姓名进行排正序取10条,请写SQL。在特定日期、每个学生在同一年级、同一学科只返回一条成绩数据。查询时,如果特定日期没有成绩数据,则需要返回这个日期之前的最新(离特定日期最近)成绩数据。

科目 年级 学生 成绩日期 成绩分数
语文 1 张三 2015-01-03 100
语文 1 李四 2015-01-03 80
语文 1 张三 2015-01-05 80
语文 1 李四 2015-01-05 90
数学 1 张三 2015-01-04 80

提醒:如果要取2015-01-05的数据,要求得到张三的语文1年级成绩为80分,李四的语文1年级成绩为90分,张三的数学成绩为80分。要考虑到在同一天、同一学科、同一年级不是所有学生都有成绩。执行SQL查询需要得到的结果如下:

科目 年级 学生 成绩日期 成绩分数
语文 1 李四 2015-01-05 90
数学 1 张三 2015-01-05 80

我的思路是:case when + group by

查看回复