sql 求救 分不多 30分送

uffeng 2003-08-30 02:38:26
数据库名:Study
表1:Student(学生表)
StudentID Char(4) 学生ID
StudentName Varchar(20) 学生姓名
表2:Class(课程表)
ClassID Char(4) 课程号
ClassName Varchar(50) 课程名
表3:StuCls
ClassID Char(4) 课程号 是CLASS的外键
StudentID Char(4) 学生ID 是Student的外键
Pass Int 成绩


题目1 查询未参加考试的学员信息(学员ID,姓名) 就是没有成绩的
查询2:分组显示学生各科成绩及该生的学科总分,及所有参考学员各科成绩总分(rollup)
sql 语句 谢谢
...全文
33 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
uffeng 2003-08-30
  • 打赏
  • 举报
回复
3 不对的说
zjcxc 元老 2003-08-30
  • 打赏
  • 举报
回复
4.
select a.ClassID,b.ClassName,Pass=sum(a.Pass)
from StuCls a inner join Class b on a.ClassID=b.ClassID
zjcxc 元老 2003-08-30
  • 打赏
  • 举报
回复
呵呵,楼主考试啊.

3.
select a.StudentID,a.StudentName,b.ClassName,c.Pass
from StuCls c
right join Student a on c.StudentID=a.StudentID
inner join Class b on c.ClassID=a.ClassID
uffeng 2003-08-30
  • 打赏
  • 举报
回复
3 :查询所有学员(包含未参加考试的学员)信息(学员ID,姓名,考试科目,成绩)
4 :分组统计各科成绩的总分
zjcxc 元老 2003-08-30
  • 打赏
  • 举报
回复
1.
select * from student where studentid not in(select studentid from stucls)


2.

select a.studentid
,studentname=case when grouping(a.studentid)=1 then ' 总分 '
else a.studentname end
,b.classid
,classname=case when grouping(b.classid)=1 then '学科总分'
else b.classname end
,pass=sum(c.pass)
from stucls c
inner join study a on a.studentid=c.studentid
inner join class b on a.ClassID=c.ClassID
group by a.studentid,a.studentname,b.classid,b.classname with rollup
having not((grouping(a.studentid)=0 and grouping(a.studentname)=1)
or (grouping(b.classid)=0 and grouping(b.classname)=1))
pengdali 2003-08-30
  • 打赏
  • 举报
回复
题目1 查询未参加考试的学员信息(学员ID,姓名) 就是没有成绩的
select * from Student where StudentID not in (select StudentID from StuCls)
txlicenhe 2003-08-30
  • 打赏
  • 举报
回复
1: Select * from student where studentid not in (select studentid from StuCls)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧