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

来源:网友推荐     更新:2025-05-16
sql查询 从一张表中找到每个班成绩排在第十名的信息。

--按成绩降序排列 取前10个即可
select a.number,b.class,b.score from st_score as a
join (
select top(1) t.class,t.score from (
select top 10 class,score from st_score
group by class
order by score desc) as t order by t.score) as b
on a.class=b.class and a.score=b.score
order by b.class,b.score desc

答:
试运行段:
select *
from(
SELECT
obj.id,
obj.score,
CASE
WHEN @rowtotal = obj.score THEN
@rownum
WHEN @rowtotal := obj.score THEN
@rownum :=@rownum + 1
WHEN @rowtotal = 0 THEN
@rownum :=@rownum + 1
END AS rownum
FROM
(
SELECT id,name,score
from test -- 表名字
ORDER BY score DESC
)) AS obj,
(SELECT @rownum := 0 ,@rowtotal := NULL) r
) as no2
where rownum < 4

学生表名为: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  



比如 学生表名为: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;
不明白可以追问~

  • 岳麓区欧珀:MySQL升序查询的使用方法mysql中升序的使用
    父会18267535304: } conn->close();?> 以上代码将连接到MySQL数据库,查询学生表中的信息,并按照年龄升序排列,最后输出查询结果。四、总结 MySQL升序查询是一种常用的数据查询方式,使用ORDER BY子句可以对查询结果进行排序,按照升序或降序排列。在实际开发中,根据需求可以灵活运用MySQL升序查询,并通过PHP代码进行操作。
  • 岳麓区欧珀:MySQL中三表子查询的用法和实现方式mysql三表子查询
    父会18267535304: [第二个子查询表]WHERE [条件语句]);3. 示例 为了更好地理解三表子查询的应用,下面我们通过一个示例来说明。假设我们有三个表分别是student、class和grade,其中student表中包含学生的个人信息,class表中包含班级信息,grade表中记录学生的考试成绩。现在,我们需要从这三个表中查询出每个班级中成绩最...
  • 岳麓区欧珀:MySQL中的Mul键优化查询效率的利器mysql中mul键
    父会18267535304: 索引可以单个字段上创建,也可以在多个字段上创建。如果我们在WHERE子句和JOIN条件中使用了多个WHERE条件,那么我们需要使用Mul键进行优化。Mul键是MySQL中非常重要的索引类型,它可以大幅提高查询效率。下面我们将通过一个示例来介绍Mul键的使用方法。示例一:我们有一张学生表,包含ID、姓名、性别、出生日期...
  • 岳麓区欧珀:如何使用MySQL查询不大于零的数据mysql不大于零
    父会18267535304: 方法一:使用WHERE子句 使用WHERE子句是最基本的方法之一,可以筛选出不大于零的数据。假设我们有一个表格“Students”,其中包含学生的成绩信息。如果我们只想查询成绩不大于零的学生,则可以使用以下查询语句:SELECT * FROM Students WHERE score 这条语句将返回分数不大于零的所有学生的信息。方法二:使用...
  • 岳麓区欧珀:MySQL实现数据去重操作简单高效实用mysql中去重复
    父会18267535304: 一、通过DISTINCT语句实现数据去重 DISTINCT语句可以对查询结果进行去重,只返回不重复的数据行。其基本语法如下:SELECT DISTINCT 列名 FROM 表名;其中,列名表示需要进行去重的列,可以是单个或多个列。表名则表示需要去重的数据表。例如,有一张学生信息表(students),其中有重复的姓名(name)数据,...
  • 岳麓区欧珀:MySQL三表联合查询实例详解mysql三表查询语句
    父会18267535304: 一、什么是联合查询 联合查询(也称作JOIN查询)是一种将多个数据表结合起来查询的技术。联合查询能够关联多张表的多行数据,使得要查询的结果集更为丰富,也更为复杂。二、MySQL三表联合查询的实例 该实例包括三个表:学生表、班级表、课程表,在其中通过联合查询,查询每个学生所参加的所有课程及班级。
  • 岳麓区欧珀:MySQL查询统计两个表中的记录数量mysql两条记录数
    父会18267535304: 表名 记录数量 学生信息表格 100 课程信息表格 50 两种方法都可以实现查询两个表格的记录数量,并且结果完全一样。但是,第一种方法比第二种方法更高效,尤其是在处理庞大的数据集时。因此,在实际的查询中,建议优先使用第一种方法。总结 通过本文的介绍,我们了解了如何使用MySQL查询语句统计两个...
  • 岳麓区欧珀:数据库有2张表,一张学生表,一张成绩表,查询某学生的成绩,sql语言怎么写...
    父会18267535304: 连接查询。根据2张表关联的字段查询,比如学生表有学生ID字段,成绩表如果也有这个ID,则select * from [学生表] inner join [成绩表] on [学生表].ID=[成绩表].学生ID mysql和sql server 数据库中 sql 语言应该都是一样的,但是函数。。。特有的肯定不一样的,sql(结构化查询语言)语言都是一样的,你可以百度...
  • 岳麓区欧珀:MySQL中使用using的方法解析mysql中using
    父会18267535304: 其中,列名是两张表中共同拥有的列名。使用using关键字的优点在于,它可以自动去重,即只返回匹配的一条记录。而使用on关键字则会返回所有匹配的记录。此外,在使用大数据量表时,使用using关键字可以提高查询效率。下面,我们来看一个具体的例子:假设有两张表,一张是学生表students,包含学生的姓名和年龄...
  • 岳麓区欧珀:MySQL实现不在某个范围内的查询当字段不在给定值列表中时使用NOTIN语法...
    父会18267535304: NOT IN语法的语法格式为:SELECT * FROM table_name WHERE column_name NOT IN (value1, value2, …);其中,table_name是要查询的表名,column_name是要查询的字段名,value1、value2等是指定的值。查询结果将会返回所有不在这个范围内的记录。下面我们来举一个例子:假设我们有一个学生表...
  • 相关链接

  • mysql单表有条件查询
  • mysql查询最大的三条数据
  • mysql嵌套查询语句
  • mysql单表全表查询慢
  • mysql百万数据单表查询
  • 来自于网友分享,若有事请联系
    © 好有爱分享网