今天去参加一家的面试,笔试题中有这么的一道题。就是如何查询每个科目最好的三个人:
SELECT * FROM Students s WHERE (
SELECT COUNT(*) FROM Students sd WHERE sd.kemu= s.kemu sd.score >= s.score) <=3 ORDER BY kemu, score DESC;
首先解释一下这样的做法,子查询的做法是查询确认每一个成绩中与本部门记录中的全部成绩做比较查询个数。如果比这个大的个数小于三个,说明这个数肯定排前三,同时拿出数值。
网友评论