sql查询第三名到第五名成绩(sql成绩排名前三)

http://www.itjxue.com  2023-01-30 13:28  来源:未知  点击次数: 

sql查询第三到第五名的成绩

select top 5 id from 表 order by 成绩 desc

获取前5名的id记录

select top 3 * from 表 where id in (select top 5 id from 表 order by 成绩 desc) order by id

取三条记录按照成绩小的排序!

这样就可以了

我没有测试过!

有错误请告知!

怎么用SQL的查询语句列出某同学所有课程的课程名和成绩啊,并按成绩从低到高排序啊?

1、打开Microsoft SQL Server 2012,选中需要查询所有表的数据库。

2、选中需要查询的表后,点击左上角的“新建查询”,如图。

3、点击“新建查询”后,会在右边弹出一个编辑框,我们需要在这里编写sql语句,来查询该数据库下的所有表结构。

4、编写sql语句,点击“执行”,当然,这表语句我们可以根据实际情况,来改变条件只查询需要的表名。

5、这时,会在右下方出现最终的查询结果,如下图所示。

sql语言,有一个成绩单表,已知学生姓名,如何查询名次?

1、创建测试表,

createtabletest_score(namevarchar2(20),scorenumber);

2、插入测试数据

insertintotest_scorevalues('张三',85);

insertintotest_scorevalues('李四',90);

insertintotest_scorevalues('王二',95);

insertintotest_scorevalues('吴七',83);

insertintotest_scorevalues('李六',66);

commit;

3、查询表中全量数据,selectt.*,rowidfromtest_scoret;

4、编写sql,根据学生姓名,查询学生名词,以学生‘李四’为例,成绩排名第二;?selectt.*from(selectt.*,rank()over(orderbyscoredesc)rkfromtest_scoret)twheret.name='李四';

用sql查询第三名到第五名的同学,怎么用呢?

我们先分析一下,假设有一个表叫grade,里面有一列叫A,A中记录的是很多学生的成绩,那么我们可以采取这种办法求出第三名学生的成绩(嵌套三次查询语句):

select min(A) AS A3 from grade where A(select min(A) AS A2 from grade where A(SELECT Min(A) AS A1 FROM grade))

同样,将这个句嵌套五次就可以取出第五名学生成绩:

select min(A) AS A5 from grade where A(select min(A) AS A4 from grade where A(select min(A) AS A3 from grade where A(select min(A) AS A2 from grade where A(SELECT Min(A) AS A1 FROM grade))))

最后一步,写一个语句,取上次者之间的值,最终结果是:

select A from grade where A=(...) and A=(.....)

第一个括号用步骤一的语句,第二个括号用步骤二的语句,结果是:

select A from grade where A=(select min(A) AS A3 from grade where A(select min(A) AS A2 from grade where A(SELECT Min(A) AS A1 FROM grade))) and A=(

select min(A) AS A5 from grade where A(select min(A) AS A4 from grade where A(select min(A) AS A3 from grade where A(select min(A) AS A2 from grade where A(SELECT Min(A) AS A1 FROM grade)))))

结果经过验证,没有问题.

sql查询第几名的语句

select * from score as t1 where

(select count(*) from score as t2 where t2.subject=t1.subject and t2.score=t1.score)=3

错了,上面是每科成绩第三,看下面的

select top 1 * from

(select top 3 avg(score) as avgscore,name from score group by name order by avgscore desc)

order by avgscore

sql 语句查询 前5名后5名的成绩

不知道你的是什么数据库,我用oracle的写法了。

两种办法:

分别求最大和最小,然后union all

select * from(select?* from table order by 成绩) where rownum=5

union all

select * from(select?* from table order by 成绩 desc) where rownum=5

利用排序,找到每个人的位置,然后输出。排序的方法很多,可以用rownum排序,也可以用row_number()over()排序

我用row_number()over()写一个

select?a.姓名,a.成绩 from

(select row_number()over(order by 成绩) num,姓名,成绩 from table) a where a.num=5 or

a.num=(select count(*)-5 from table)

我没实验,不过就算有问题也应该不大。

sqlserver的版本是啥?是2005以上么?如果是

那么利用那个row_number的应该也可以,不过为了让分数一样的人都出来,那么最好改为

这种情况是假设前五出现分数相同的话,假如前五名有六个人的情况,不过我没有输出名次,另外我上面的那种写法也可以试试,sqlserver好像也可以。

不过如果你要是sql2005以前的版本那时sqlserver还没有这几个开窗函数,那就稍微有点麻烦了。

select?姓名,成绩 from

select rank()over(order by 成绩) num,rank()over(order by 成绩 desc) num_desc,姓名,成绩 from table) a where a.num=5 or a.num_desc=5 order by 成绩 desc

(责任编辑:IT教学网)

更多

推荐网站经济文章