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