第3章 SQL 习题 - 3.11

本章聚焦于SQL查询,涉及大学模式数据。包括:a) 列出选修过至少一门计算机科学(Comp. Sci.)课程且去除重复姓名的学生;b) 查找2009年春季前未选任一课程的学生ID和姓名;c) 求每个系教师的最高工资;d) 从各系最高工资中找出最低值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.11使用大学模式,用SQL写出如下查询。

a.找出所有至少选修了一门Comp. Sci. 课程的学生姓名,保证结果中没有重复的姓名。

with target_course(id, title) as (
	select course_id, title from course where dept_name = 'Comp. Sci.'
)
select distinct name from takes natural join student
where course_id in (select id from target_course);
   name   
----------
 Bourikas
 Zhang
 Shankar
 Williams
 Levy
 Brown
(6 rows)

b.找出所有没有选修在2009年春季之前开设的任何课程的学生的ID和姓名。

with student_id(ID) as (
(select ID from student)
except -- 减去所有选修2009年春季课程的学生
--找出所有选修2009年春季开设课程的学生
(select distinct ID from takes where (course_id, sec_id, semester, year) 
 in(
--找出2009年春季开设的所有课程
select course_id, sec_id, semester, year from section where year = 2009 and semester = 'Spring'
 )))
select ID, name from student natural join student_id order by ID;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值