【SQL练习】 计算并填写学生获得的总学分 本题目要求编写UPDATE语句, 计算每位学生已获得的总学分并填写在stu表中的totalcredit字段。... |
您所在的位置:网站首页 › sql语句计算 › 【SQL练习】 计算并填写学生获得的总学分 本题目要求编写UPDATE语句, 计算每位学生已获得的总学分并填写在stu表中的totalcredit字段。... |
数据库上机练习
问题描述:
本题目要求编写UPDATE语句, 计算每位学生已获得的总学分并填写在stu表中的totalcredit字段。 其中,总学分为每个学生通过的选修课程的学分数总和,注意:只有在60分以上的选课成绩才能获得该门课程的学分数,每门课程的学分数在cou表中credit字段。 表结构: 请在这里写定义表结构的SQL语句。例如: CREATE TABLE `stu` ( `sno` char(4) NOT NULL, `sname` char(8) NOT NULL, `sex` tinyint(1) DEFAULT NULL, `mno` char(2) DEFAULT NULL, `birdate` datetime DEFAULT NULL, `memo` text, `totalcredit` smallint(6) DEFAULT NULL, PRIMARY KEY (`sno`) ); CREATE TABLE `cou` ( `cno` char(4) NOT NULL, `cname` varchar(30) NOT NULL, `credit` smallint(6) DEFAULT NULL, `ptime` char(5) DEFAULT NULL, `teacher` char(10) DEFAULT NULL, PRIMARY KEY (`cno`) ); CREATE TABLE `sc` ( `sno` char(4) NOT NULL, `cno` char(4) NOT NULL, `grade` decimal(6,1) DEFAULT NULL, `rank` char(255) DEFAULT NULL, PRIMARY KEY (`sno`,`cno`), CONSTRAINT `fk_sc_cno` FOREIGN KEY (`cno`) REFERENCES `cou` (`cno`), CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`) );表样例 请在这里给出上述表结构对应的表样例。例如 cou表: sc表: 原因分析:这个问题解决的关键在于怎么按码,改变相应元组的其他属性,正确的方法是用两张表 update A,B set A.x=B.x where A.主码=B.主码那么现在的问题是如何建立一个含有sum(credit)和sno的新表 代码如下 select sno,sum(credit) from( select stu.sno sno,case when sc.grade>=60 then credit else NULL end credit from stu left outer join sc on stu.sno=sc.sno left outer join cou on sc.cno=cou.cno group by stu.sno,credit,grade) a group by sno接下来的操作就是两张表的结合了,即可得到正确答案: 正确解答 UPDATE stu,(select sno,sum(credit) SUM from( select stu.sno sno,case when sc.grade>=60 then credit else NULL end credit from stu left outer join sc on stu.sno=sc.sno left outer join cou on sc.cno=cou.cno group by stu.sno,credit,grade) a group by sno) B SET stu.totalcredit = B.SUM where stu.sno = B.sno点个关注吧,求求了,我会努力更新的。(上次的数理统计复习我会陆续上传的) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |