mysql 成绩单处理:分组排名、并列处理、确定成绩等级

在进行学生成绩管理时,遇到如何按科目分组进行排名及处理并列成绩的挑战。例如,三年级上学期语文和下学期数学的成绩排名。正确结果应为:语文1-8名,数学1-7名(考虑并列)。通过Mysql,实现了分组排名和处理并列分数的功能,同时分享了进行成绩等级划分的代码。涉及的数据库操作包括分组排序、并列处理和统计分析。
摘要由CSDN通过智能技术生成

    今天在做一个学校的学生成绩管理的时候,涉及到对学生的成绩进行排名的问题

    主要的难点有两处:

    1. 对不同考试项目进行分组,

    2. 对同一组内的成绩并列的要做处理,

    举个栗子:比如有两门考试

        三年级上学期语文100,100,90,80,70,60,50,0和

        三年级下学期数学100,100,99,98,98,98,97,97

    正确的结果应该是

        三年级上学期语文1,1,3,4,5,6,7,8

        三年级下学期数学1,1,3,4,4,4,7,7

    代码如下:

# 成绩排名表,所有科目,所有考试,所学学号,所有成绩
drop  TABLE if exists score_rank;
CREATE  TABLE score_rank
    SELECT id as stuid,score,rank,score_id2 as score_id
    FROM (SELECT tmp.id, tmp.score,
            @incRank := IF(@Grp = score_id,@incRank + 1,1),
            @curRank := IF(@Grp = score_id and @prevRank = score, @curRank, @incRank) AS rank,
            @prevRank := IF(@Grp = score_id,score,100),
            @Grp:=score_id as score_id2
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值