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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 怎样查询 单科成绩排名第3名的学生?相关的知识,希望对你有一定的参考价值。

SQL 如何查询单科成绩排第3的? 为什么查询单科最大的成绩都可以。直接select max(degree) from score group by cno
那怎么查询单科第3名的成绩呢?? 求高手作答! 在线等。!!!!!! 谢谢

写个笨点的方法,
SELECT * INTO #TempA FROM score ORDER BY degree DESC
SELECT TOP 1 * FROM #TempA WHERE degree NOT IN(SELECT TOP 2 degree FROM #TempA )
参考技术A select top 1 degree from (select top 3 * from score order by degree desc) 参考技术B select t.sno,t.grade,t.cnofrom sc as t where grade in (select top 1 (select top 3grade from sc where t.cno=cno order by grade ))order by cno

sql 语句计算学生总成绩

假设表pstest内有3行数据学生的成绩,数据如下表,请分别写出计算学生总成绩和单科平均成绩的SQL,并把结果填在表中。(5分)
表结构:

表名 PSXSDD 索引 Clustered Unique(F_DDBH,F_FLBH)
别名 列名 数据类型 允许空否 缺省 备注
姓名 F_NAME Varchar(20) N
数学 F_MATH Float Y
语文 F_CH Float Y
英语 F_EN Float Y
总成绩 F_SUM float Y

成绩表:

姓名 数学 语文 英语 总成绩
张三 90 83 87
李四 79 (null) 80
王五 82 92 0
平均成绩

参考技术A select
学生.学号
as
姓名,
sum(成绩.分数)
as
总分
from
学生
left
join
成绩
on
成绩.学号=学生.学号
group
by
学生.学号
完全手打,若有疑问直接留言,我会持续关注的,保证好评率~
参考技术B update pstest set F_SUN = F_MATH + F_CH + F_EN;
把所有的学生的总成绩都填上了
然后
看题意平均成绩是要插入一条数据
insert into pstest values ("平均成绩",select sum(F_MATH)/3 from pstest, select sum(F_CH)/3 from pstest,select sum(F_EN)/3 from pstest,select sum(F_SUN)/3 from pstest);嘿嘿,方法可能有点笨。
参考技术C select F_NAME,(case when F_MATH is null then 0 else F_MATH end)+(case when F_CH is null then 0 else F_CH end)+(case when F_EN is null then 0 else F_EN end) total_points from PSXSDD

select avg(case when F_MATH is null then 0 else F_MATH end) avg_math,avg(case when F_CH is null then 0 else F_CH end) avg_ch,avg(case when F_EN is null then 0 else F_EN end) avg_eng from PSXSDD ;

以上是关于SQL 怎样查询 单科成绩排名第3名的学生?的主要内容,如果未能解决你的问题,请参考以下文章

sql排序问题 查询学生成绩5-7名的学生学号、课程号、成绩

mysql中一张学生表,查询出单科成绩前十名学生的所有信息 和总分成绩前十名学生的所有信息 在线等

SQL查询单科成绩最高的同学

sql查出每个科目成绩前三名

sql 语句计算学生总成绩

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