① sql语句:查询各班成绩前3的同学姓名
分析如下:
可以用row_number函数来解决。
1、创建测试表,插入数据:
(资料来源:网络:SQL语句)
② 在SQL SERVER中,怎样查询每门功课成绩最好的前两名,帮我写一下,谢谢,请补充:
create table #SC(
S# varchar(10), --学号
C# varchar(10), --课号
score decimal(18,1) --成绩
)
insert into #sc values('01' , '01' , 80)
insert into #sc values('01' , '02' , 90)
insert into #sc values('01' , '03' , 99)
insert into #sc values('02' , '01' , 70)
insert into #sc values('02' , '02' , 60)
insert into #sc values('02' , '03' , 80)
insert into #sc values('03' , '01' , 80)
insert into #sc values('03' , '02' , 80)
insert into #sc values('03' , '03' , 80)
insert into #sc values('04' , '01' , 50)
insert into #sc values('04' , '02' , 30)
insert into #sc values('04' , '03' , 20)
insert into #sc values('05' , '01' , 76)
insert into #sc values('05' , '02' , 87)
insert into #sc values('06' , '01' , 31)
insert into #sc values('06' , '03' , 34)
insert into #sc values('07' , '02' , 89)
insert into #sc values('07' , '03' , 98)
create table #temp
(
S# varchar(10), --学号
C# varchar(10), --课号
score decimal(18,1) --成绩
)
insert into #temp
select top 2 *from #SC where C#='01' order by score desc
insert into #temp
select top 2 *from #SC where C#='02' order by score desc
insert into #temp
select top 2 *from #SC where C#='03' order by score desc
select *from #temp
drop table #temp
drop table #SC
运行结果
S# C# score
01 01 80.0
03 01 80.0
01 02 90.0
07 02 89.0
01 03 99.0
07 03 98.0
③ SQL 得到 每个组的前两名 怎么写
SELECT * FROM TAB A
WHERE 编号 IN (
SELECT TOP 2 编号
FROM TAB
WHERE 班级=A.班级
ORDER BY 成绩 DESC
)
④ mysql查询每科成绩前两名
首先,select count(1)表示查询出表中符合条件的行数;
r2.cno=r1.cno and r2.score >= r1.score表示查询条件;
select count(1) from sc r2 where r2.cno=r1.cno and r2.score >= r1.score总体的意思就是从表r2中查询出满足r2.cno=r1.cno and r2.score >= r1.score条件的行数;
结合完整的sql语句来看,这个查询出的行数要<=2,所以"行数<=2"是作为前一个查询语句的查询条件的。
这样这个语句简单点理解就是:从r1表查询sno,cno,score这三列,查询条件是"行数<=2"。
说的比较复杂,不知道你懂了没
⑤ sql怎么输出查询结果的前两个
如果是2个sql语句的话。如果列名都一样,使用unionall就可以了。例如select*from表1unionallselect*from表2就可以了。
⑥ SQL查询语句 输出班级男女生的前两名
select sno,sex,top (2) with ties scores from student where sex = '男' ORDER BY Scores DESC
Union
select sno,sex,top (2) with ties scores from student where sex = '女' ORDER BY Scores DESC
你要的输出结果是不可能实现的,至少你给我看的字段里,没有任何字段可以让两个表横向连接,只能纵向连接
⑦ 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的成绩按从大到小排序,然后外层再取各自的前两名