34,576
社区成员
发帖
与我相关
我的任务
分享
-- 4
select c.class_name, b.subj_name, s.stud_name
from subj b, achi a, class c, stud s
where a.achi_num in (select top 3 achi_num
from achi
where subj_no = b.subj_no
order by achi_num desc)
and s.class_no = c.class_no and s.stud_no = a.stud_no
and b.subj_no = a.subj_no
order by b.subj_name, c.class_name, s.stud_name, a.achi_num asc
create table stud
(
stud_no varchar(10),
stud_name varchar(10),
stud_sex varchar(4),
class_no varchar(10)
)
create table class
(
class_no varchar(10),
class_name varchar(20)
)
create table subj
(
subj_no varchar(10),
subj_name varchar(20)
)
create table achi
(
stud_no varchar(10),
subj_no varchar(10),
achi_num float
)
go
insert into class
select '1', '1班' union all
select '2', '2班' union all
select '3', '3班'
insert into stud
select '1', 'student1', '男', '1' union all
select '2', 'student2', '女', '1' union all
select '3', 'student3', '男', '1' union all
select '4', 'student4', '男', '2' union all
select '5', 'student5', '女', '2' union all
select '6', 'student6', '男', '3'
insert into subj
select '1', 'Chinese' union all
select '2', 'Math' union all
select '3', 'English'
insert into achi
select '1', '1', 68 union all
select '1', '2', 65 union all
select '1', '3', 80 union all
select '2', '2', 68 union all
select '2', '3', 56 union all
select '5', '1', 68 union all
select '6', '3', 50
go
--1
select c.class_name, b.subj_name, s.stud_name, a.achi_num
from stud s, class c, subj b, achi a
where not exists (select * from achi a1
where a1.achi_num < 60 and a1.stud_no = s.stud_no)
and s.class_no = c.class_no and s.stud_no = a.stud_no
and b.subj_no = a.subj_no
order by class_name, subj_name asc, achi_num desc
-- 2
select c.class_name, b.subj_name, s.stud_name
from stud s inner join class c on s.class_no = c.class_no, subj b
where not exists (select * from achi a
where a.stud_no = s.stud_no and a.subj_no = b.subj_no)
-- 3
select c.class_no, b.subj_no, achi_num = avg(a.achi_num)
from stud s, class c, subj b, achi a
where s.class_no = c.class_no and s.stud_no = a.stud_no
and b.subj_no = a.subj_no
group by c.class_no, b.subj_no
-- 4
--???
1. select d.班级名称,c.学号,c..学生姓名 ,b.科目名称,a.成绩数据
from 成绩表 a inner join 科目表 b on a.科目编号=b.科目编号
right join 学生表 c on a.学号= c.学号 inner join 班级表 d
on c.班级编号=d.班级编号
where a.成绩数据>=60
order by d.班级名称,b.科目名称,a.成绩数据 desc
2. select d.班级名称,c.学号,c.学生姓名 ,b.科目名称,a.成绩数据
from 成绩表 a inner join 科目表 b on a.科目编号=b.科目编号
right join 学生表 c on a.学号= c.学号 inner join 班级表 d
on c.班级编号=d.班级编号
where a.成绩数据<60
order by d.班级名称,b.科目名称,a.成绩数据 desc
3. select d.班级名称,b.科目名称 ,sum(a.成绩数据)/count(*) as 平级成绩
from 成绩表 a inner join 科目表 b on a.科目编号=b.科目编号
right join 学生表 c on a.学号= c.学号 inner join 班级表 d
on c.班级编号=d.班级编号
group by d.班级名称, b.科目名称
4.
select top 3 b.科目名称,d.班级名称,c.学生姓名, A课程成绩数据,B课程成绩数据
from (select 学号,科目编号,case when 科目编号='A' then 成绩数据 else 0 end as A课成绩数据,
case when 科目编号='B' then 成绩数据 else 0 end as B课程成绩数据
s) a inner join 科目表 b on a.科目编号=b.科目编号
right join 学生表 c on a.学号= c.学号 inner join 班级表 d
on c.班级编号=d.班级编号
order by A课程成绩数据 desc,B课程成绩数据 desc