在sql中根据成绩显示学生排名

Posted 刘超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在sql中根据成绩显示学生排名相关的知识,希望对你有一定的参考价值。

1、准备

 1 create table newtable
 2 (
 3   name VARCHAR(100),
 4   yuwen INT(10),
 5   shuxue INT(10)
 6 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 7 
 8 
 9 INSERT INTO newtable (name, yuwen, shuxue) VALUES (\'张三\', 80, 67);
10 INSERT INTO newtable (name, yuwen, shuxue) VALUES (\'李四\', 98, 65);
11 INSERT INTO newtable (name, yuwen, shuxue) VALUES (\'王五\', 59, 98);
12 INSERT INTO newtable (name, yuwen, shuxue) VALUES (\'赵六\', 76, 87);
13 INSERT INTO newtable (name, yuwen, shuxue) VALUES (\'田七\', 69, 85);

2、实现

 1 select yuwentable.name studentname,yuwentable.yuwen yuwenscore ,cast(yuwentable.rank as SIGNED) yuwenrank,shuxuetable.shuxue shuxuescore,cast(shuxuetable.rank as SIGNED) shuxuescore 
 2 from 
 3   (  
 4     select (@yuwenrank:=@yuwenrank+1) as rank,name,yuwen 
 5     from newtable a,(select (@yuwenrank:=0)) b order by a.yuwen desc
 6   ) yuwentable ,
 7   (
 8     select (@shuxuerank:=@shuxuerank+1) as rank,name,shuxue 
 9     from newtable a,(select (@shuxuerank:=0)) b order by a.shuxue desc
10   ) shuxuetable
11   where yuwentable.name = shuxuetable.name order by yuwentable.name

说明:在DbVisualizer中,代码执行后,RANK这列含有小数点,所以这里通过case函数将其转换整数

3、结果

studentname yuwenscore yuwenrank shuxuescore shuxuescore 
----------- ---------- --------- ----------- ----------- 
张三          80         2         67          4           
李四          98         1         65          5           
王五          59         5         98          1           
田七          69         4         85          3           
赵六          76         3         87          2   

 

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【刘超★ljc】。

本文版权归作者,禁止转载,否则保留追究法律责任的权利。

以上是关于在sql中根据成绩显示学生排名的主要内容,如果未能解决你的问题,请参考以下文章

SQL 怎样查询 单科成绩排名第3名的学生?

用sql语句,查询每个班级成绩排名前三名的学生姓名

用sql语句,查询每个班级成绩排名前三名的学生姓名

sql语句的学习

SQL四大排名函数(ROW_NUMBERRANKDENSE_RANKNTILE)

如何使用 PHP 和 MySQL 显示学生在百名学生中的排名?