MYSQL学习笔记(5)——聚合窗口函数

题目复盘——聚合窗口函数1

SQL33 对试卷得分做min-max归一化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问题分析

(1)高难度试卷——exam_record left join examination_info on…where difficulty=‘hard’
(2)得分在每份试卷作答记录内执行min-max归一化后缩放到[0,100]——
聚合窗口函数找每个exam_id试卷内的最大最小值:
select uid,exam_id, score,min(score)over(partition by exam_id) min_score,max(score)over(partition by exam_id) max_score from exam_record
归一化缩放到[0,100]:((score-min_score)/(max_score-min_score))*100;
(3)输出用户ID试卷ID,归一化后分数平均值——
按照uid,exam_id分组:group by uid,exam_id;
平均值:avg(((score-min_score)/(max_score-min_score))*100);
保留整数:round(avg(((score-min_score)/(max_score-min_score))*100),0);
(4)如果某试卷作答记录只有一个得分则无需使用公式——
只有一个得分意味着:max(score)=min(score)分母为0不能用公式;
if语句判断:if(exam_min_score=exam_max_score,score,((score-min_score)/(max_score-min_score))*100)
(5)排序——order by uid asc,avg_new_score desc;这里题目描述的不太严谨,题目说按照归一化分数降序让我一开始以为是平均之前的分数,但正确答案和表格示例都显示应该是平均分的降序;

答案重写

SELECT uid,exam_id,
round(avg(
if(exam_min_score=exam_max_score,score,((score-min_score)/(max_score-min_score))*
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值