语句实现查询某⼈的排名,分数相同排名相同
⼀、第⼀种形式排名
如:4个学⽣的分数分别是:100、90、90、80
排名结果为:第⼀、第⼆、第⼆、第三
SELECT
count( DISTINCT score )
FROM
tbl_score
WHERE
cast( score AS DECIMAL ( 6, 2 ) ) >=
( SELECT score FROM tbl_score WHERE student_id = "000001" )
解释
传⼊此⼈的student_id,从tbl_score表⾥⾯查询出此⼈的成绩,然后从tbl_score⾥⾯查询出⼤于等于这个分数的学⽣数量,DISTINCT 去
重,因为同⼀个分数的学⽣排名⼀样,最终求出的count就是>=他分数的⼈,也就是他的排名。
⼆、第⼆种形式排名
如:4个学⽣的分数分别是:100、90、90、80
排名结果为:第⼀、第⼆、第⼆、第四
String score = score.getScore();
List scores;
int rankNumber = 1;
for (Score score: scores){
String otherScore = score.getScore();
if (Double.parseDouble(otherScore)>Double.parseDouble(performanceScore)){
rankNumber++;
}
}
解释
此种⽅法⽐较简单,拿当前学⽣分数与其他分数进⾏对⽐,如果别⼈分数>⾃⼰分数,排名加⼀。