当前位置:首页 » 编程语言 » 查询前两名sql
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

查询前两名sql

发布时间: 2023-02-01 06:11:37

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的成绩按从大到小排序,然后外层再取各自的前两名