列出选课成绩报表,要求列出:课程号、课程名称、学号、姓名、成绩,每门课程最后一行是该课程的平均成绩(保留2位),最后一行是所有的平均成绩(保留2位)

codewyh 2017-11-20 09:35:57
要求用临时表完成

建立一个学生数据表
CREATE TABLE S(
[sno][varchar](20) NOT NULL,
[sname][nvarchar](20) NOT NULL,
)

建立一个课程数据表
CREATE TABLE C(
[cno][varchar](20) NOT NULL,
[cname][varchar](20) NOT NULL,
)

建立一个选课数据表
CREATE TABLE SC(
[sno][varchar](20) NOT NULL,
[cno][varchar](20) NOT NULL,
[grade][int] NOT NULL,
)
...全文
797 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨停了 2017-11-20
  • 打赏
  • 举报
回复

--测试数据
--建立一个学生数据表
CREATE TABLE S(
[sno][varchar](20) NOT NULL,
[sname][nvarchar](20) NOT NULL
)
INSERT INTO s
SELECT '001','小赵' union all
SELECT '002','小钱' union all
SELECT '003','小孙'
--建立一个课程数据表
CREATE TABLE C(
[cno][varchar](20) NOT NULL,
[cname][varchar](20) NOT NULL
)
INSERT INTO C
SELECT 'C01','数据结构' union all
SELECT 'C02','Java' union all
SELECT 'C03','数据库'
--建立一个选课数据表
CREATE TABLE SC(
[sno][varchar](20) NOT NULL,
[cno][varchar](20) NOT NULL,
[grade][int] NOT NULL
)
INSERT INTO SC
SELECT '001','C01',50 UNION ALL
SELECT '002','C01',66 UNION ALL
SELECT '003','C01',63 UNION ALL
SELECT '002','C02',60 UNION ALL
SELECT '003','C02',73 UNION ALL
SELECT '003','C03',91
--测试数据结束

SELECT a.cno,c.cname,a.sno,b.sname,a.grade
--如果要用临时表就把下面这一句反注释,最后查询这个#tab表就可以了
--INTO #tab
FROM SC a
INNER JOIN S b ON a.sno=b.sno
INNER JOIN C c ON a.cno=c.cno
UNION all
SELECT a.cno,c.cname,'平均成绩','',cast(sum(a.grade)*1.0/count(1) as numeric(5,2))
FROM SC a
INNER JOIN S b ON a.sno=b.sno
INNER JOIN C c ON a.cno=c.cno
GROUP BY a.cno,c.cname
UNION all
SELECT '全部平均成绩','','','',cast(sum(a.grade)*1.0/count(1) as numeric(5,2))
FROM SC a
INNER JOIN S b ON a.sno=b.sno
INNER JOIN C c ON a.cno=c.cno
ORDER BY a.cno,a.sno

--select * from #tab ORDER BY cno,sno

二月十六 版主 2017-11-20
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/392288082这个帖子之前回复过了,希望楼主能给出测试数据和想要的结果的。 楼主应是要图片上的效果,然后给的临时表又和效果字段对应不上怎么写? xh,xh2这些都是什么字段?所以上个帖子给你写了个大概,把要用的基本上写了 建议楼主列出表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
codewyh 2017-11-20
  • 打赏
  • 举报
回复
临时表

34,590

社区成员

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

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