10-21 查找课程选修的情况

 

作者 张庆

单位 集美大学

本题目要求编写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表:

56410115-ada1-476d-82b8-63a10ca3cc05.JPG

sc

e1ca1fe3-d28e-47a4-9b9d-72b6879abd42.JPG

输出样例:

请在这里给出输出样例。例如:

3341d3c0-c734-4929-a9d8-be0d2e0919cd.JPG

分析:

运用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;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1920

 

 

 

 

 

2627

 

 

 

 

 

 

 

 

 

 

 

 

 

共 345 分

未作答

待评测

答案正确

答案错误

 

 

 

软件21_数据库原理_实验3 SQL查询与数据更新

 

题目列表

 

 

23 天

 

xhBQAAAA1JREFUCB1juHHjxn8ACJwDiJiZm2oAAAAASUVORK5CYII=

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值