表结构:
问题:求出每个班前三成绩的人姓名班级和排名
-- 解析,开窗函数, 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
;
结果: