SQL语句查询指定的数据,查询只选择了指定4门课程的学生

本文将指导您如何使用SQL查询语句筛选出仅选择了特定课程的学生,通过分组计数并验证条件,实现精确的数据筛选。

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

【记录问题,还未一定验证正确性】

例如有如下数据:

学生表stu[stu_id, stu_name]
1, xiaoming;
2, xiaofang;
3, xiaozhi;


课程表course[course_id, course_name]
a, '语文';
b, '数学';
c, '英语';
d, '物理';
e, '化学';
f, '生物';
学生选课表t_stu_course[stu_id, course_id]
1, a;
1, b;
1, c;
1, d;
2, a;
2, b;
2, c;
3, b;
3, d;
3, e;
3, f;
查询出只选择了[语文、数学、英语、物理]这四门课程的学生, 所以只有[1, xiaoming]选择[a,b,c,d]这四门课程
--begin
--找出course_id只能是这个4个的数据的stu_id
select stu_id, count(stu_id) ks
  from t_stu_course
--在A集合里面找出course_id只能在这4个值中间的
 where course_id in ('语文',
                     '数学',
                     '英语',
                     '物理')
--再次根据stu_id分组,已计算课数列ks
 group by stu_id
having stu_id in
--找出只有4个数据的所有stu_id [我们称下面SQL语句查出来的数据叫做A集合]
 (select stu_id
    from t_stu_course
   group by stu_id
  having count(stu_id) = 4)
--课数列必须等于4
and count(stu_id) = 4
--end


一、建立以下五个表: 教师表:Teacher,学生表:Student, 课程表:Course,选课表:SC,授课表:TC 二、完成以下查询: 1.查询成绩在80-90之间的记录。 2.查询至少4个同学选修的课程名。 3.查询其他系中比“信息系”所有学生年龄都大的学生名单及年龄,并按年龄降序输出: 4.查询学生张建国同岁的所有学生的学号。姓名和系别。 5.查询选修了2以上课程学生名单。 6.查询至少有一与“张建国”选课相同的学生的姓名,课程号,系别 7.查询成绩比该课程平均成绩高的学生的成绩表。 8.查询选课号为01001课程且成绩高于课程01002学生的姓名,此两课的课程名和成绩。 9.查询所有没选修01001号课程学生名单 10、查询每个同学各课程的平均成绩和最高成绩,按降序输出姓名、平均成绩、最高成绩; 11、查询所有学生都选修了的课程号和课程名; 12、查询选修了991102号学生选修了的课程学生学号和姓名。 三、使用SQL创建视图,修改记录 1.创建成绩视图SCORE_VIEW,包含学号sno,姓名sn,课程名cn,成绩score; 2.创建一个计算机系学生名单视图S_VIEW,包含学号sno,姓名sn,性别sex; 3.通过上面的视图,修改学号为991102,课程号01001的成绩记录; 4,创建一个视图,计算机系学生的成绩单score_view_CDEPT,包含学号sno,姓名sn,课程名cn,成绩score
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值