sql实现成绩排名

是选课表数据结构: sql实现成绩排名_第1张图片
包括学生id,课程id,考试成绩
现在要实现 对每门课程的全班学生进行排名统计

思路是通过把数据表做一个自交,自交条件是表b的分数大于表a的分数,这样做count(b.score)得到的结果就是表b中有多少记录是大于表a的

SELECT a.cid, a.sid, a.score, COUNT(b.score)+1 AS rank
FROM sc AS a 
LEFT JOIN sc AS b 
ON a.score<b.score AND a.cid = b.cid
GROUP BY a.cid, a.sid,a.score
ORDER BY a.cid, rank ASC;

执行结果
sql实现成绩排名_第2张图片

你可能感兴趣的:(sql)