题目描述
我们有一个表:
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;