题目描述

我们有一个表:

  • class_grade:包含班级成绩信息,包括成绩等级 grade 和该等级的学生人数 number

目标是查询出每个成绩等级的学生最差排名,并按成绩等级升序排列。根据示例可知,最差排名即每个成绩等级的累积和。

知识点

  • 窗口函数:使用SUM窗口函数计算每个成绩等级的累积排名。
  • 排序:使用ORDER BY子句按成绩等级升序排列结果。

关键问题分析

1. 计算每个成绩等级的累积排名

我们使用SUM窗口函数计算每个成绩等级的累积排名:

sum(number) over(order by grade asc) as t_rank
  • SUM(number) OVER (ORDER BY grade ASC) AS t_rank: 计算每个成绩等级的累积排名,按成绩等级升序排列。

2. 排序输出

我们按成绩等级升序排列输出结果:

order by grade asc
  • ORDER BY grade ASC: 按成绩等级升序排列。

完整代码

select grade, sum(number) over(order by grade asc) as t_rank
from class_grade
order by grade asc;