SQL 语句练习

10-4 查询选修人数超过2人且成绩都在60分以上的课程 (10分)
本题目要求编写SQL语句,查询选修人数超过2人且成绩都在60分以上的课程的课程名、最高成绩、最低成绩和平均成绩。

提示:请使用SELECT语句作答。

表结构:
请在这里写定义表结构的SQL语句。例如:

CREATE TABLE major (
mno char(2) NOT NULL,
mname varchar(20) NOT NULL,
PRIMARY KEY (mno)
);
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,
PRIMARY KEY (sno),
KEY fk_stu_mno (mno),
CONSTRAINT fk_stu_mno FOREIGN KEY (mno) REFERENCES major (mno)
);

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),
CONSTRAINT fk_sc_sno FOREIGN KEY (sno) REFERENCES stu (sno)
)

表样例
请在这里给出上述表结构对应的表样例。例如

stu表:

stu.JPG

major表:

major.JPG

cou表:

cou.JPG

sc表:

sc.JPG

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

midt05b.JPG

思路, 简单除法运算,考虑空值即可
题解代码如下:

select sc.cno as 课程号,cname as 课程名,max(grade) as 
最高成绩,min(grade) as 最低成绩, avg(grade) as 
平均成绩 from sc,cou where sc.cno=cou.cno and not exists
(select cno from sc where sc.cno=cou.cno and (grade is null or grade<60))
GROUP BY sc.cno having count(sno)>=2

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiachengren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值