sql 面试题开窗函数row_number() over(partition by ... 分组 order by ...排序) as rn
表结构:
问题:求出每个班前三成绩的人姓名班级和排名
-- 解析,开窗函数, over(partition by 分组列1,分组列2 order by 排序列)as 排名
第一阶段全部数据排名:
第二阶段筛选排名
SELECT rn , score, class, sname from ( SELECT *, ROW_NUMBER() OVER(PARTITION by class order by score desc ) rn from std_score )t where t.rn <= 3 ;
结果: