/*查询各用户下各高难度试卷的max-min归一化得分值(窗口函数)*/ # 其中窗口函数用来查询各高难度试卷下的最高分和最低分 with t1 as (select uid, exam_id, case when max_score-min_score=0 then score when max_score-min_score>0 then (score-min_score)/(max_score-min_score)*100 else null end as ge_score from ( select uid, er.exam_id, submit_time, score, max(score)over(partition by er.exam_id) max_score, min(score)over(partition by er.exam_id) min_score # 窗口函数 from exam_record er join examination_info ei on er.exam_id=ei.exam_id where difficulty = 'hard' and submit_time is not null ) k1) select uid, exam_id, round(avg(ge_score)) avg_new_score from t1 group by uid, exam_id order by exam_id, avg_new_score desc;
【切记】with as建立临时表时,一定要加小括号把查询包裹起来,另外这部分不要加分号结尾