一个班的学生成绩需要排名次?
看下面的两个方法:
第一种:用纯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++;
}
}
}
思想:排名最主要的是将所有的对象查询出来,再将下一个对象查询出来,然后将当前对象和下一个对象对比,如果分数不相同则执行排名操作,相同则保持当前排名。