表: 成绩表
+------+-----+ | 字段名称 | 类型 | +------+-----+ | 学号 | int | | 班级 | int | | 成绩 | int | +------+-----+ 学号 是该表的主键。 该表的每一行表示 一个班级中一个学生的成绩,包含学号、班级和成绩。
编写一个 SQL 查询,得出每个班级学生成绩的百分比排名,排名保留2位小数。
查询结果如下例所示。
示例 1:
输入: 表:成绩表 +------+----+----+ | 学号 | 班级 | 成绩 | +------+----+----+ | 1001 | 1 | 86 | | 1002 | 1 | 95 | | 1003 | 2 | 89 | | 1004 | 1 | 83 | | 1005 | 2 | 86 | | 1006 | 3 | 92 | | 1007 | 3 | 86 | | 1008 | 1 | 88 | +------+----+----+ 输出: +------+----+----+-------+ | 学号 | 班级 | 成绩 | 百分位排名 | +------+----+----+-------+ | 1002 | 1 | 95 | 0 | | 1008 | 1 | 88 | 0.33 | | 1001 | 1 | 86 | 0.67 | | 1004 | 1 | 83 | 1 | | 1003 | 2 | 89 | 0 | | 1005 | 2 | 86 | 1 | | 1006 | 3 | 92 | 0 | | 1007 | 3 | 86 | 1 | +------+----+----+-------+ 解释: 使用窗口函数percent_rank()获取百分位排名,获取后使用round()函数保留2位小数。
