作者 张庆
单位 集美大学
本题目要求编写SQL语句,
查找所有开设的课程及被学生选修的情况(选课人数,最高成绩,最低成绩,平均成绩),如某门课程尚未有学生选修时也要列出来。
表结构:
请在这里写定义表结构的SQL语句。例如:
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,
PRIMARY KEY (`sno`,`cno`),
KEY `fk_sc_cno` (`cno`),
CONSTRAINT `fk_sc_cno` FOREIGN KEY (`cno`) REFERENCES `cou` (`cno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
cou
表:
sc
表
输出样例:
请在这里给出输出样例。例如:
分析:
运用count,max,min,avg函数可以轻松获得值,表通过连接。
但是做这题有个小细节,因为它要求将全部的课程列出,分组时需要加上cname,并且注意grade is null的时候,这些函数不会表示0而是null,所以我们需要一个ifnull 语句,去返回0。
代码:
select cou.cno 课程号 , cname 课程名 , count(sno) 选课人数,ifnull(max(grade),0) 最高成绩, ifnull(min(grade),0) 最低成绩,ifnull(avg(grade),0) 平均成绩 from cou left join sc on cou.cno=sc.cno group by cou.cno, cname;
共 345 分
未作答
待评测
答案正确
答案错误
题目列表
23 天