SELECT subjectName,studentName, score FROM
tb_score a
WHERE (SELECT count(*) FROM tb_score b WHERE b.score > a.score and
b.subjectName = a.subjectName) <3
ORDER BY SUBJECTNAME,SCORE DESC,STUDENTNAME
不错不错,谢谢sbaz(万神渡劫),应该写成:
SELECT studentName, subjectName, score FROM tb_score a WHERE (SELECT count(*) FROM tb_score b WHERE b.score > a.score and b.subjectName = a.subjectName) <3;
select studentName, subjectName, score
from (SELECT rank() over(partition by a.subjectName order by a.score desc) as num,studentName, subjectName, score
FROM tb_score a
) b
where b.num <= 3
SELECT studentName, subjectName, score FROM tb_score a WHERE (SELECT count(*) FROM tb_score b WHERE b.score > a.score and b.subjectName = a.subjectName) <=3;