select uid,exam_id,
round(avg(case when count_score >1 then ((score-min_score)/(max_score-min_score))*100 else score end ))
as avg_new_score from (
select uid,exam_id,score,
max(score) over w as max_score,
min(score) over w as min_score,
count(score) over w as count_score -- 需要增加一个判断数量的列
from exam_record inner join examination_info using(exam_id)
where difficulty = "hard"
window w as (partition by exam_id))t
where max_score is not null
group by uid,exam_id having avg_new_score is not null
order by exam_id,avg_new_score desc;
难点:
如果某个试卷作答记录中只有一个得分,那么无需使用公式,归一化并缩放后分数仍为原分数
这要求必须要记录到每个试卷的分数数量。

京公网安备 11010502036488号