SQL多科目排名学生id输出问题

SQL已知学生id(uid)、课程id(csid)、分数(score),需要输出各科前10%学生的uid,如何做到呢?

这是一个开窗问题,以下SQL可在MySQL8执行。

select 
*, 
row_number() over (partition by uid,csid order by score desc) rw from  tt
where rw<=round(select count(distinct uid)/10 from tt) 

若有帮助,谢谢采纳~

是按每科单独查询数据,还是一次查询全部数据
然后所有数据都在一个表还是多个表