查询学生各门成绩前三名
『壹』 mysql版 查询各科成绩前三名的记录:(不考虑成绩并列情况)
上面那条答案应该是可以的啊,可能是看起来复杂了点吧,我自己试过版是没问题的:
SELECT t1.sno,t1.cno,Score
FROM SC t1
WHERE EXISTS
(SELECT COUNT(1)
FROM SC
WHERE t1.cno= cno AND t1.score<score
HAVING COUNT(1)<3)
ORDER BY t1.cno,score DESC
另外还有一种权类似的写法:
SELECT t1.sno,t1.cno,Score
FROM SC t1
WHERE
(SELECT COUNT(cno)
FROM SC
WHERE t1.cno= cno AND t1.score<score)<3
ORDER BY t1.cno,score DESC
『贰』 SQL语句:查询各班成绩前3的同学姓名
分析如下:
可以用row_number函数来解决。
1、创建测试表,插入数据:
(资料来源:网络:SQL语句)
『叁』 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;
(3)查询学生各门成绩前三名扩展阅读:
学生成绩表常用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
『肆』 SQL查询每门成绩前十学生
select top 10
from CJ
where sub = '语文'
union with
select top 10
from CJ
where sub = '数学'
select top 10
from CJ
where sub = '物理内容'
union with
『伍』 php怎么各科查前三名的学生的成绩
Order by 成绩 desc limit 3
『陆』 access2003 查找各科成绩80分以上的学生的总成绩,并显示前三名如何设定
查询窗体的设计视图请参照下图:
下面是上图对应的查询窗体的SQL视图。。
SELECTTOP3姓名专,数学,语文属,英语,Val([数学])+Val([语文])+Val([英语])AS总成绩
FROM成绩表
GROUPBY姓名,数学,语文,英语
HAVING数学>"80"AND语文>"80"AND英语>"80"
ORDERBYVal([数学])+Val([语文])+Val([英语])DESC;
『柒』 用sql语句,查询每个班级成绩排名前三名的学生姓名
1、首先在打开的SQLServer中,假设有两条数据中,包含有【张】,但是这个张一前一后,如下图所示。
『捌』 SQL 查询各门成绩前两名的学生
你先抽一条数据来反过来理解这条SQL
比如 你表格里的第一条:陈六、政治
SQL里的子句你内把t.subject 替换成 我们这条数据真容实的值,就可以看出来
select top 2 stu_id from stu_score where subject='政治' order by score desc
就是查询我当前这条记录对应的subject(政治)里,成绩最高的两条数据的 stu_id。
我再提供一种写法给你
select*from(
selectt1.*,row_number()over()asfidfromstu_score)wherefid<=2
这种写法主要是row_number() over(partition by subject order by score desc),
意思是:我按照subject 分组,根据score排序从大到小,分别标出序号fid。也就是我把不同subject的成绩按从大到小排序,然后外层再取各自的前两名
『玖』 sql语句 每科成绩的前三名
可以用row_number函数来解决。
1、创建测试表,插入数据:
create table sc
(id int,
name varchar(20),
class varchar(20),
score int);
insert into sc values (1,'badkano','一年一班',100)
insert into sc values (2,'网络知道团长','一年一班',99)
insert into sc values (3,'小短','一年一班',95)
insert into sc values (4,'小小动','一年一班',97)
insert into sc values (5,'小智','一年一班',80)
insert into sc values (6,'吕布','一年二班',67)
insert into sc values (7,'赵云','一年二班',90)
insert into sc values (8,'典韦','一年二班',89)
insert into sc values (9,'关羽','一年二班',70)
insert into sc values (10,'马超','一年二班',98)
2、查询每个班级的前三名,可用语句:
select * from
(select row_number() over (partition by class order by score desc) 排名,* from sc) t
where 排名<=3 order by class asc,score desc
『拾』 mysql 查询每门成绩的前十名
mysql 查询每门成绩的前十名
create table sc
(sno int,
cno int,
score);
insert into sc values (1,1,100);
insert into sc values (2,1,80);
insert into sc values (3,1,25);
insert into sc values (4,1,45);
insert into sc values (5,1,67);
insert into sc values (1,2,25);
insert into sc values (2,2,77);
insert into sc values (3,2,78);
insert into sc values (4,2,69);
insert into sc values (5,2,24);