10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)

这篇具有很好参考价值的文章主要介绍了10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

10-28 查询选修张老师讲授所有课程的学生(MSSQL)

分数 10

全屏浏览题目

切换布局

作者 张庆

单位 集美大学

本题目要求编写SQL语句,
查询选修了张老师所讲授的所有课程的学生。

提示:MSSQLServer 评测SQL语句。

表结构:

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

-- 学生表
CREATE TABLE stu (    
  sno char(4) NOT NULL,
  sname nvarchar(8) NOT NULL,
  sex smallint DEFAULT NULL,
  mno char(2) DEFAULT NULL,
  birdate datetime DEFAULT NULL,
  memo ntext,
  PRIMARY KEY (sno)
);
-- 课程表
CREATE TABLE  cou  (  
   cno  char(4) NOT NULL,
   cname  nvarchar(30) NOT NULL,
   credit  smallint DEFAULT NULL,
   ptime  char(5) DEFAULT NULL,
   teacher  nvarchar(10) DEFAULT NULL,
  PRIMARY KEY ( cno )
);
-- 学生选课成绩表
CREATE TABLE  sc  (  
   sno  char(4) NOT NULL,  -- 学生学号
   cno  char(4) NOT NULL,  -- 课程号
   grade  decimal(4,1) DEFAULT NULL,
  PRIMARY KEY ( sno , cno ),
  CONSTRAINT  fk_sc_cno  FOREIGN KEY ( cno ) REFERENCES  cou  ( cno ),
  CONSTRAINT  fk_sc_sno  FOREIGN KEY ( sno ) REFERENCES  stu  ( sno )
)

表样例

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

stu表:

10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)

cou表:

10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)

sc表:

10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)

输出样例:

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

10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)

 首先看到这道题我是有点无从下手。。。。。

看了大佬的解题思路让我大彻大悟,我觉得我有必要记录此题

 我将解题思路分为五个步骤:

、先找到选修了张老师的学生学号,当然这里查询出来的肯定存在没有选修的学生

二 、再给学号用group by分组统计一下,其目的就是统计学生选修了几门张老师的课程

三 、既然已经查出每个学生选修了几门张老师课程,那么我们现在需要查出张老师交了几门课程

四 、然后我们在将第二步跟第三步作比较,如果学生选修的数量跟张老师所教的 课程数量一致,那么这个人就是我们要找的

五 、最后就是可以直接去stu表中找到学号所对应的学生姓名

 当然我知道,大家做题的时候很烦去重新创一个表与数据,在不知道运行结果和调试的情况下做对题跟理解答案就更困难了,所以我针对这道题做出了如下步骤结果详解

第一步与第二步的运行结果

10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)

第三步的结果

10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)

第四步的结果(having)

10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)

第五步的结果 

这里简单说两句,要去掉count(cno)才能查找出对应的sno,具体原因我也不知道,总之不去掉的话是运行出错的 

10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)

答案一

select sname 
from stu
where sno in (
   select sno -- ,count(cno) -- 这里用了count(cno)的解释为了更直观的看出group by后的结果
     from sc 
     where cno in (
        select cno 
        from cou 
        where teacher='张老师'
    )
     group by sno 
-- 基本就是分组统计了选了多少张老师的课
having count(cno)=  -- 用having去过滤筛选(如果不清楚having的用法可以去查查)
  (select count(cno) 
	from cou
	where teacher='张老师')
)

答案二

如果是mssql的话需要在条件查询张老师前面加一大写的 N文章来源地址https://www.toymoban.com/news/detail-430987.html

select sname 
from stu
where sno in (
   select sno -- ,count(cno) -- 这里用了count(cno)的解释为了更直观的看出group by后的结果
     from sc 
     where cno in (
        select cno 
        from cou 
        where teacher=N'张老师'
    )
     group by sno 
-- 基本就是分组统计了选了多少张老师的课
having count(cno)=  -- 用having去过滤筛选(如果不清楚having的用法可以去查查)
  (select count(cno) 
	from cou
	where teacher=N'张老师')
)

到了这里,关于10-28 查询选修张老师讲授所有课程的学生(对自己来说有难度的一道题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 10-23 查询平均成绩以上的课程(MSSQL)

    本题目要求编写SQL语句, 查询每个同学超过他选修的平均成绩的课程。 请使用: 1)用相关子查询实现 2)使用派生表实现。 表结构: 请在这里写定义表结构的SQL语句。例如: -- 课程表 CREATE TABLE  cou  (      cno  char(4) NOT NULL,    cname  nvarchar(30) NOT NULL,    credit  smallint D

    2024年02月06日
    浏览(40)
  • c语言完成:输入10个学生5门课程成绩,分别用函数求: (1) 每个学生的平均分; (2) 每门课平均分; (3) 每门课不及格人数。 ...

    下面是一个可以实现上述功能的c语言代码示例: ``` #include stdio.h #define STUDENT_NUM 10 // 学生数量 #define COURSE_NUM 5 // 课程数量 int main() { // 存储学生成绩的二维数组 int scores[COURSE_NUM][STUDENT_NUM]; // 存储每个学生的平均分 double student_avgs[STUDENT_NUM]; // 存储每门课平均分 double course_a

    2024年02月04日
    浏览(46)
  • SQL初学、精通者必看:10个学生成绩查询史上最强技巧全攻略

    本文提供了一个含有学生、成绩、课程和教师信息的完整数据库,并为读者提供了 SQL 查询练习题,还包含了练习的答案以及解析。这些题目旨在帮助有一定SQL使用经验的读者更深入地了解学生成绩相关的知识,也有助于初学者提高其SQL使用技能。这些题目涉及学生成绩排名

    2024年02月06日
    浏览(53)
  • Windows命令创建用户,支持Windows Server或者Win10所有版本,可以在命令中实现自定义用户最全参数,自己运维经验,全部可用有效

    使用PowerShell创建用户可以带上更多的参数,缺点就是用户密码只能设置一样的。 1、设置用户统一的密码 $Password = Read-Host -AsSecureString 注意 :执行这条命令后要输入密码!!! 2、新建用户,可以附带用户详细参数 New-LocalUser \\\"用户名\\\" -Password $Password -FullName \\\"用户全名\\\" -Descr

    2024年02月11日
    浏览(51)
  • 希望所有计算机专业同学都知道这些老师

    翁恺老师是土生土长的浙大码农,从本科到博士都毕业于浙大计算机系,后来留校教书,一教就是20多年。 翁恺老师的c语言课程非常好,讲解特别有趣,很适合初学者学习。 郝斌老师的思路是以初学者的思路来思考的,非常适合小白,你不理解的问题,基本上他都会详细说

    2024年02月05日
    浏览(45)
  • 计算机网络笔记(方老师408课程)(持续更新)

    这学期学计算机网络,但是我感觉我们学校的某位任课老师讲的不太行,听完introduction部分以后,我决定脱离学校课程,直接按照408去学习,备战考研。 我购买了408推荐参考教材《计算机网络》,是谢希仁版本的第八版,网上对应的视频不是很多,我找到了方诗虹老师的课程

    2023年04月09日
    浏览(48)
  • 【北邮鲁鹏老师计算机视觉课程笔记】02 filter

    二进制图像: 灰度图像: 彩色图像: 噪声点让我们看得难受是因为噪声点与周边像素差别很大 滤波核= 卷积核 对应相乘再累加起来 卷积核记录了权值,把权值套到要卷积的目标图上,对应相乘 线性和平移不变形 因为实际使用的时候卷积核是对称的,因此不要求翻转 真实

    2024年02月20日
    浏览(43)
  • 《区块链技术与应用》北大肖臻老师——课程笔记【21-23】

    提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考。如有错误或不足之处,请大家指正。 权益证明proof of stake 比特币和 以太坊目前都是使用基于工作量的证明,这种共识机制受到一个普遍的批评——浪费电。 Y轴是TWH=Terawatt hours 10的

    2023年04月08日
    浏览(41)
  • 《区块链技术与应用》北大肖臻老师——课程笔记【11-12】

    提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考。如有错误或不足之处,请大家指正。 1. 转账交易时如果接收者不在线(没有连接到比特币网络上)怎么办? 转账交易不需要接收者在线,这个交易只是在区块链上记录一下,把发送

    2024年01月22日
    浏览(48)
  • 《区块链技术与应用》北大肖臻老师——课程笔记【6-8】

    提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考。如有错误或不足之处,请大家指正。 比特币网络传播的工作原理(the BitCoin network): 比特币工作在应用层(application layer),底层是P2P的overlay network(覆盖网络)。 比特币的 P2P网络

    2024年01月18日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包