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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中一张学生表,查询出单科成绩前十名学生的所有信息 和总分成绩前十名学生的所有信息 在线等相关的知识,希望对你有一定的参考价值。

学生表名为:student, 单科成绩的字段为:subject。学生名字为:name

查询单科成绩前十:mysql语句为:select * from student order by subject desc limit 10;

查询总分成绩前十:mysql语句为:select sum(subject) subject,name from student group by name order by subject desc limit 10;

注:

select sum(subject) subject,name 

这句的意思是:sum(subject) subject 把单科成绩加总用subject 来命名(就是总成绩),name就是一个字段,这里只有两个字段。

group by name order by subject : group by name 的意思按照名字这一栏来分组,当然,学生成绩表名字有可能是一样的,按照学号是最准确的,这里只是举个例子。

order by subject  这句的意思是按照总分成绩排序,这里的subject 是前面重命名总分的意思。

select sum(subject) as countsubject,name from student group by name order by countsubject desc limit 10;

扩展资料:

学生成绩表常用sql

1. 在表中插入符合主键

[sql] 

/*成绩表*/ 

CREATE TABLE SC  

(  

Sid INT REFERENCES Student(Sid), /*学生学号*/ 

Cid INT REFERENCES Course(Cid), /*课程编号*/ 

Score INT NOT NULL, /*课程分数*/ 

PRIMARY KEY(Sid,Cid) /*将学生学号和课程编号设为复合主键*/ 
)

2. 查询各科成绩最高分,最低分以及平均分

[sql] 

SELECT c.Cname, MAX(s.Score) AS Max, MIN(s.Score) AS Min, AVG(s.Score) AS Average   

FROM Course c JOIN SC s ON c.Cid = s.Cid   

GROUP BY c.Cname   

/*此处应注意,若不按照c.Cname进行分组,SQL语句会报错,c.Cname在SELECT语句中不合法,因为它并未出现在聚合函数中也没有出现在GROUP BY语句中*/  


3. 查询平均成绩大于80分的学生姓名以及平均成绩

[sql] 

SELECT Sname, AVG(Score) AS Average FROM Student JOIN SC   

ON Student.Sid=SC.Sid   

GROUP BY Sname  

HAVING AVG(Score)>80   

/*以聚合函数为条件进行删选只能在HAVING语句中进行,WHERE语句不支持聚合函数*/ 

4. 按总分为学生排名,总分相同名次相同

[sql] 

SELECT RANK() OVER (ORDER BY SUM(ss.Score) DESC) AS Rank, s.Sname, 

ISNULL(SUM(ss.Score),0)   

FROM Student s LEFT JOIN SC ss   

ON s.Sid = ss.Sid   

GROUP BY s.Sname   

ORDER BY SUM(ss.Score) DESC 

/*RANK()是SQL Server的一个built-in函数,语法为  

RANK() OVER ( [ partition_by_clause ] order_by_clause ).*/

5. 查询总分在100至200之间的学生姓名及总分

[sql] 

SELECT s.Sname,SUM(ss.Score) FROM Student s JOIN SC ss ON s.Sid=ss.Sid  

GROUP BY s.Sname HAVING SUM(ss.Score) BETWEEN 100 AND 200  

参考技术A 比如 学生表名为:student, 单科成绩的字段为:subject。学生名字为:name
查询单科成绩前十:mysql语句为:select * from student order by subject desc limit 10;
查询总分成绩前十:mysql语句为:select sum(subject) subject,name from student group by name order by subject desc limit 10;
不明白可以追问~追问

总分的有点不明白
select sum(subject) subject,name 是不是查到的数据中有三个字段 :一个总分字段,单科成绩字段,姓名字段,是这样的吗?group by name order by subject 这一句你也给讲解一下。
多谢了我会追加分的

追答

select sum(subject) subject,name :
这句的意思是:sum(subject) subject 把单科成绩加总用subject 来命名(就是总成绩),name就是一个字段,这里只有两个字段。
group by name order by subject : group by name 的意思按照名字这一栏来分组,当然,学生成绩表名字有可能是一样的,按照学号是最准确的,这里我只是举个例子而已。
order by subject 这句的意思是按照总分成绩排序,这里的subject 是前面重命名总分的意思。或许我这么写你会明白点。
select sum(subject) as countsubject,name from student group by name order by countsubject desc limit 10;

本回答被提问者采纳

SQL语句查询每个学生的学号、姓名、平均成绩、最高成绩和最低成绩

参考技术A select 学生表.学号,学生表.姓名,
average(成绩表.成绩) as 平均成绩,
max(成绩表.成绩) as 最高成绩,
min(成绩表.成绩) as 最低成绩
from 学生表 left join 成绩表 on 学生表.学号=成绩表.学号
order by 学生表.学号
成绩表可换成语文、数学、英语等,查询结果就是各个学生相应课程的平均成绩、历史最高成绩、历史最低成绩.

以上是关于mysql中一张学生表,查询出单科成绩前十名学生的所有信息 和总分成绩前十名学生的所有信息 在线等的主要内容,如果未能解决你的问题,请参考以下文章

mysql 查询每个班的前十名的成绩

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

mysql有一张成绩表(姓名)(班级)(成绩)三个字段,查出不同班级的成绩前三名的学生的分数

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

sql 语句计算学生总成绩

mysql版 查询各科成绩前三名的记录:(不考虑成绩并列情况)