这个SQL语句怎么写??

ratzip 2005-09-25 06:24:25
S表:
SNO SN SEX AGE DEPT
S1 徐啸 女 17 2
S2 辛国年 男 18 6
S3 徐玮 女 20 1
S4 邓一欧 男 21 6
S5 李扬 男 19 6
S6 王力 女 22 3
S7 张辉 男 18 6
S8 张明明 男 19 3
SC表:

SNO CNO GRADE
S1 C1 80
S1 C2 85
S1 C6 75
S1 C4 56
S1 C5 90
S2 C1 47
S2 C3 80
S2 C4 75
S2 C5 70
S6 C1 95
S6 C2 80
S6 C3 87
S3 C1 75
S3 C2 70
检索出选修课程至少等于三门的学生学号、姓名、平均成绩和选课门数


S3 C3 85
...全文
328 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zlp321002 2005-09-25
--我晕了!@S表和@SC表 是我定义的临时表啊!
--把这两个表用你现在的表代替啊!!!!
回复
ratzip 2005-09-25
服务器: 消息 137,级别 15,状态 2,行 2
必须声明变量 '@S表'。
服务器: 消息 137,级别 15,状态 1,行 8
必须声明变量 '@SC表'。
回复
zlp321002 2005-09-25
--测试环境:
declare @S表 table (SNO varchar(10),SN varchar(20),SEX varchar(10),AGE int, DEPT int)
insert into @S表 select 'S1','徐啸','女',17,2
union all select 'S2','辛国年','男',18,6
union all select 'S3','徐玮','女',20,1
union all select 'S4','邓一欧','男',21,6
union all select 'S5','李扬','男',19,6
union all select 'S6','王力','女',22,3
union all select 'S7','张辉','男',18,6
union all select 'S8','张明明','男',19,3


declare @SC表 table (SNO varchar(10),CNO varchar(20),GRADE int)
insert into @SC表 select 'S1','C1',80
union all select 'S1','C2',85
union all select 'S1','C6',75
union all select 'S1','C4',56
union all select 'S1','C5',90
union all select 'S2','C1',47
union all select 'S2','C3',80
union all select 'S2','C4',75
union all select 'S2','C5',70
union all select 'S6','C1',95
union all select 'S6','C2',80
union all select 'S6','C3',87
union all select 'S3','C1',75
union all select 'S3','C2',70


--查询
select 学生学号=B.SNO,
姓名=(select SN from @S表 where SNO=B.SNO),
平均成绩=B.GRADE,
选课门数=B.numcount
from
(select SNO=SNO,count(CNO) as numcount,GRADE=Avg(GRADE)
from @SC表
Group by SNO
Having count(CNO)>=3
) B

--结果
学生学号 姓名 平均成绩 选课门数
---------- -------------- ----------- -----------
S1 徐啸 77 5
S2 辛国年 68 4
S6 王力 87 3

(所影响的行数为 2 行)




回复
ratzip 2005-09-25
要求是 聚集函数检索与分组检索
回复
ratzip 2005-09-25
不行啊
回复
haohao110 2005-09-25
select * from s,sc having sum(*)>=3 group by sno
回复
zlp321002 2005-09-25
--try
select 学生学号=B.SNO,
姓名=(select SN from 表 where SNO=B.SNO),
平均成绩=B.GRADE,
选课门数=B.numcount
from
(select SNO,count(CNO) as numcount,GRADE=Avg(GRADE)
from SC表
Group by CNO
Having count(*)>3
) B
回复
zwqzwqzwqzwq 2005-09-25
select sno,sn,grade from s left join sc as cc s.sno=sc.sno count (sc.sno) as tt where cout(sc.sno)>3
回复
ratzip 2005-09-25
SNO 学号
SN 姓名
AGE 年龄
SEX 性别
DEPT 系号
CNO 课程号
CN 课程名
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2005-09-25 06:24
社区公告
暂无公告