当前位置:首页 » 编程语言 » sql查询平均成绩最高的前三个同学
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql查询平均成绩最高的前三个同学

发布时间: 2022-03-04 07:51:05

sql 显示平均成绩后三名的学生的学号和平均分

--取前3名
selecttop3*fromTABLEorderbyscoredesc;
--取后3名
selecttop3*fromTABLEorderbyscore;

⑵ 查询每个同学所修课程的平均成绩和最高成绩,按降序排列输出姓名、平均成绩,最高成绩, 用sql select

这里涉及到了两张表,学生表tb_student 和 成绩表 tb_score。不知道你要按照那个属性来排序,所以就都写上了,第一排序:姓名,第二排序:平均成绩,第三排序:最高成绩
select st.name,avg(score) avgScore,max(score) maxScore from tb_score sc right join tb_student st on st.id = sc.stu_id group by stu_id,st.name order by st.name,avg(score),max(score) desc;

⑶ sql查询某个学生的平均成绩的排名

1
2
3
4
5
6
7
8
9
10
11

select s.dname,s.sname,s.avggrade
from
(select t.dname,t.sname,t.avggrade,row_number() over (partition by t.dname order by t.avggrade desc) rn
from
(select a.name dname,b.name sname,avg(c.grade) avggrade
from
department a,student b,takes c
where a.department_id=b.department_id
and b.student_id=c.student_id
group by a.name,b.name) t) s
where s.rn=1

包含并列的情况,如果一个学院有两个第一,两个人都显示,以上为 sqlserver或oracle写法,其他数据库执行不了
-------------补充-----------
给你个通用的

select s2.*
from
(select t.dname,max(t.avggrade) avggrade
from
(select a.name dname,b.name sname,avg(c.grade) avggrade
from
department a,student b,takes c
where a.department_id=b.department_id
and b.student_id=c.student_id
group by a.name,b.name) t
group by t.dname) s1,
(select a.name dname,b.name sname,avg(c.grade) avggrade
from
department a,student b,takes c
where a.department_id=b.department_id
and b.student_id=c.student_id
group by a.name,b.name) s2
where s1.dname=s2.dname
and s1.avggrade=s2.avggrade

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

1、首先在打开的SQLServer中,假设有两条数据中,包含有【张】,但是这个张一前一后,如下图所示。

⑸ SQL语句:查询各班成绩前3的同学姓名

分析如下:

可以用row_number函数来解决。

1、创建测试表,插入数据:

(资料来源:网络:SQL语句)

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

SELECT child.abc,child.cource,a.name

FROM (select max(b.point) as abc,c.cource from `student` as a join `achievement` as b join `course` as c on a.sex = 1 and b.sid=a.id and b.cid=c.id group by c.cource) as child

join `student` as a join `achievement` as b join `course` as c on a.sex = 1 and b.sid=a.id and b.cid=c.id where child.abc=b.point and child.cource=c.cource

很繁琐,子查询和查询的都是同一个表同一个条件,答案包对

不要姓名要学号的话就把名字换一下

原理

子查询出最高分和科目,再用父查询把(同条件下)把最高分和科目配对

⑺ 试写一个SQL语句,查询出各科成绩最高分的同学(包括学生号,科目与成绩)

select 学生号 ,科目 ,成绩 max(成绩)
from 要查的表
group by 科目
注: max(成绩)是成绩 的别名 我把成绩当作最高成绩来做了

⑻ 用SQL选出每个人成绩的最高的前三条纪录

--用开窗函数每个用户成绩排序
select*from
(selectt.*,row_number(partitionby用户名orderby成绩desc)asflagfrom表名t)
whereflag<=3

⑼ SQL 怎样查询 单科成绩排名第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 )

⑽ 用sql查询最高平均成绩的学生学号 应该怎么写

就是一下思路,第一条就是最高的,最后一条就是最低的,COUNT(1),就是统计学生的成绩次数
select * from
(select sum(学生成绩)/count(1) as 平均成绩,学生学号 from 学生成绩表
group by 学生学号) order by 平均成绩 DESC