查询各科成绩前三名的记录,不考虑并列的情况;
select
a.course_id as 课程ID,
a.score as 成绩,
count(a.course_id) as 排名
from score a left join score b on a.course_id=b.course_id and a.score<=b.score
group by a.course_id,a.score
having count(a.course_id)<4
order by a.course_id,a.score desc;
其中排序方法就是通过同表比对, count(a.course_id) 实际上是统计同一表中有多少个低于(高于)该行分数的行,进而转化为该行的实际排名