有一张学生成绩表,比如:
学号 考试序列号 成绩 自动增长字段作为记录关键字
1 A001 86 1
2 A001 93 2
3 A001 67 3
1 A002 98 4
2 A002 92 5
3 A002 97 6
.......学号是每个学生的唯一编号,考试序列号是对每次考试的唯一识别号,成绩就该学生该次考试成绩。
请求一个SQL,生成一张查询表。
查询一张表,这个表要求生成最高考试成绩及其对应的考试序列号和学生学号
比如结果如下:
学号 考试序列号 成绩
1 A002 98
2 A001 93
3 A002 97
这个SQL 怎么生成,环境 Delphi 6 + Access 2000
学号 考试序列号 成绩 自动增长字段作为记录关键字
1 A001 86 1
2 A001 93 2
3 A001 67 3
1 A002 98 4
2 A002 92 5
3 A002 97 6
.......学号是每个学生的唯一编号,考试序列号是对每次考试的唯一识别号,成绩就该学生该次考试成绩。
请求一个SQL,生成一张查询表。
查询一张表,这个表要求生成最高考试成绩及其对应的考试序列号和学生学号
比如结果如下:
学号 考试序列号 成绩
1 A002 98
2 A001 93
3 A002 97
这个SQL 怎么生成,环境 Delphi 6 + Access 2000
(凡是最高成绩的都列出来)
select a.学号,min(b.考试序列号) as 考试序列号,a.最好成绩 as 成绩 from #a a,成绩表 b where b.学号=a.学号 and b.成绩=a.最好成绩 group by a.学号,a.最好成绩
(多门最高成绩的只列出来序列号最小的)
(select 学号,max(成绩) as a from t1 group by 学号) as ta
inner join t1
on ta.学号=t1.学号 and (ta.a-t1.成绩<0.0001) and (ta.a-t1.成绩>-0.0001)
order by ta.学号
Create Table 表(学号 varchar(10),考试序列号 varchar(10),成绩 varchar(10),自动增长字段作为记录关键字 varchar(10))
--插入数据
insert into 表
select '1','A001','86','1' union
select '2','A001','93','2' union
select '3','A001','67','3' union
select '1','A002','98','4' union
select '2','A002','92','5' union
select '3','A002','97','6'
select * from 表
Create Table 表(学号 varchar(10),考试序列号 varchar(10),成绩 varchar(10),自动增长字段作为记录关键字 varchar(10))
--插入数据
insert into 表
select '1','A001','86','1' union
select '2','A001','93','2' union
select '3','A001','67','3' union
select '1','A002','98','4' union
select '2','A002','92','5' union
select '3','A002','97','6'
select * from 表
order by 自动增长字段作为记录关键字
select distinct 考试序列号,(select max(成绩) 成绩 from 表 where 考试序列号=a.考试序列号) from 表 a
group by 学号,考试序列号
drop table 表