查询成绩排名前十的学生
A. 查询考试成绩前十名的学生编号和学生成绩用SQL Server怎么查询
应该首先排除掉挂科的学生,然后按成绩倒序排列取前十位考生的成绩和内编号。
select top 10 studentid,stcore from 成绩表容
where studentid not in (select studentid from 补考表 )order by stcore desc,studentid
B. sql 查询每个班前十名
举例:
表[ClassInfo]:[ClassID],[StuID],[Score]
SQL如下:(每个班成绩前十名学生)
select a.*
from [ClassInfo] a
where (select count(*) from [ClassInfo] b on b.[ClassID]=a.[ClassID] and b.[Score]>a.[Score])<10
order by a.[ClassID] desc,a.[Score] desc
如果是学生信息表和学回生成绩表用得是2个实体表,那答就用连接查询,这里就不举例了。
明白?
C. SQL语言怎么显示成绩表中成绩最高的前十条学生的信息
先查询表中的名次,desc 都排序 ,最高成绩在上面,select top 10.........查询出前10名最高成绩的信息
D. SQL语句查询排名第10的学生姓名
这样:
select * from
(select top 10 id,score
from table
order by score) a
where a.id not in (select top 9 id from table order by score)
扩展资来料:源
注意事项
SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。
:语法
SELECT 列名称 FROM 表名称
以及:
SELECT * FROM 表名称
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
如需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons
E. sql查询排名总分前十的学生姓名!
SELECT * FROM (SELECT 班级自,姓名,SUM(分数) 总分数,ROW_NUMBER() OVER(PARTITION BY 班级 ORDER BY SUM(分数) DESC) 班级名次 FROM 表名 GROUP BY 班级,姓名) T WHERE 班级名次<=10 ORDER BY 班级,班级名次
F. SQL语句查询成绩排名前十名的学生
:以上两条均对!,关于表名和排序字段,让提问题的【朋友】填写,我们三人均祝你成功!!!
G. 怎么用sql查询班级前十名成绩的同学的姓名和分数(成绩相同的学生算同一个名次)
select name,score from (
select name,score,dense_rank() over(order by score) "row" from t )
where "row"=10
H. 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;
(8)查询成绩排名前十的学生扩展阅读:
学生成绩表常用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
I. oracle在表中查询姓名,学号,班级,成绩,成绩在整个年级的排名,成绩在本班的排名,只查看年级排名前十的学生
两个来办法:
先找出年级排名前十源的,然后再根据班级排名即可。
把年级排名和班级排名全部列出,然后再找年级排名前十的。
相对而言第一种办法比较好,二次查询的时候相对内容要少些。
select rownum年级排名,rank() over( partition by class_no order by score) as 班级排名, name,stu_no,class_no,score from(select name,stu_no,class_no,score from table order by score) where rownum<=10.
第二种写法则是反过来,先排全年级的名次和班级名次,然后再找年级排名前十。这样做的话查询压力比较大。
select * from (select rank() over(order by score) as 年级排名,rank() over( partition by class_no order by score) as 班级排名,name,stu_no,class_no,score fromtable) where 年级排名<=10
J. sql查询 从一张表中找到每个班成绩排在第十名的信息。
SELECT*FROM(SELECTROW_NUMBER()OVER()ASNewPx,*FROMst_score)aWHEREa.NewPx=10