题解 | #对试卷得分做min-max归一化#

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

http://www.nowcoder.com/practice/2b7acdc7d1b9435bac377c1dcb3085d6

#两种情况吧,只有一条数据的不需要标准化
# 并且需要先归一化,再计算均值
select
    tmp2.uid
    ,tmp2.exam_id
    ,round(avg(tmp2.s),0) as gs
from(# 计算归一化后的数值
    select
        tmp1.*
        ,if(tmp1.cnt=1, tmp1.score,(tmp1.score-tmp1.min_s)/(tmp1.max_s-tmp1.min_s)*100) as s
    from(#准备数据和字段
        select
            er.*
            ,count(er.score) over(partition by er.exam_id) as cnt
            ,max(er.score) over(partition by er.exam_id) as max_s #统计最大成绩
            ,min(er.score) over(partition by er.exam_id) as min_s # 统计最小成绩
        from examination_info ei join exam_record er
            on ei.exam_id=er.exam_id 
         where ei.difficulty='hard' and er.score is not null
    )tmp1
)tmp2
group by tmp2.uid
        ,tmp2.exam_id
order by tmp2.exam_id
        ,gs desc
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务