一个实际工作中遇到的问题,请教各位
一个实际工作中遇到的问题,请教各位,具体描述如下:
一张成绩表(有 姓名,成绩 两个字段),现进行排位次操作。
表里数据类似如下:
姓名 成绩分数
dd 100
AA 90
bb 86
FF 80
GG 80
EE 73
JJ 67
cc 56
HH 45
(表里的数据实际上是无序排列的,大约有13万条记录);
排位条件如下:
1、分数最高的学生 位次为第1位,
2、分数第二的 AA 90分 就排第二了;成绩相同的学生位次相同,则上表中的 FF GG 两个
3、学生 位次都为 第4位;那么 学生EE的 排位 为 第6位(即是所有分数高于EE的学生记录数加一)。
----------------------------------------------------------------------
现在我要根据某一个学生的成绩 查询计算他所占的位次很好 得到:
例如 学生GG 分数是80分,则他的位次计算如下:
select count(*) as wc from 成绩表 where 成绩分数 >80
得到的 结果wc 再加1 即 wc+1 就是 学生GG的所占的位次
----------------------------------------------------------------------
但实际要求的是 根据某一个位次值 来查询其对应的成绩分数,如果表中不存在这个位次就与这个
位次最接近的上一个位次和下一个位次,如上表,我要查询位次为4的成绩分数是多少(上表里是80),
我要查询位次为5的成绩分数是多少(因上表里没有第5位次,所以要查询得出表里没有第5位,与其最接近的是第4位和第6位次)
请问根据位次的值 怎么才能得到其对应的分数,如果表里没有这个位次就找出其最为接近的位次?谢谢!
请问根据位次的值 怎么才能得到其对应的分数,如果表里没有这个位次就找出其最为接近的位次?谢谢