实习班级成绩排名

一个班的学生成绩需要排名次?

看下面的两个方法:

第一种:用纯SQL实现

select *,(select count(totalmark) from studentInfo > a.totalmark)+1 as 名次 from studentInfo order by totalmark desc

注释:totalmark这个字段如果没有,大家可以将所有科目的成绩加起来,然后再执行查询。

第二种:使用JAVA代码实现

将所有的总分查询出来放在LIST里,然后循环判断:

List<StudentInfo> stuList=new ArrayList<StudentInfo>();

int mingCi=1;//定义名次变量

for(int i=0;i<stuList.size();i++){

     StudentInfo stu=stuList.get(i);

   //如果不是最后一个

    if(i<stu.size()-1){

        StudentInfo stu1=stuList.get(i+1);//取得下一个对象

         if(i==0){}//如果是第一个成绩,那么就不判断是否有分数相同的情况

        //将第当前对象和下一个对象对比,如果分数不相同,那么将名次+1,不相同,则保持当前的名次

         else if(stu.getTotalmark()!=stu1.getTotalmark()&&stu.getTotalmark().equals(stu1.getTotalmark())){

                    mingCi++;

          }

     }

}

思想:排名最主要的是将所有的对象查询出来,再将下一个对象查询出来,然后将当前对象和下一个对象对比,如果分数不相同则执行排名操作,相同则保持当前排名。
发布了47 篇原创文章 · 获赞 4 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/shyy123/article/details/7383410