select
classId,
name,
score,
dense_rank() over (partition by classId order by score) as ranking
from
table
where
ranking<=3;
别名ranking用在where子句后会报错“列名ranking无效”,其原因是:SQL的执行顺序是先where后select
参考博客:
https://blog.csdn.net/qq_36864672/article/details/78580209
https://blog.csdn.net/Jintao_Ma/article/details/51253356