2019独角兽企业重金招聘Python工程师标准>>>

1.已知关系模式:
S (SNO,SNAME)          学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER)  课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE)     选课关系。SCGRADE 为成绩
要求实现如下5个处理:
1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩 
-- 首先,建立表:
-- ----------------------------
-- Table structure for `s`
-- ----------------------------
DROP TABLE IF EXISTS `s`;
CREATE TABLE `s` (`sno` int(11) NOT NULL,`sname` varchar(32) DEFAULT NULL,PRIMARY KEY (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of s
-- ----------------------------
INSERT INTO `s` VALUES ('1', '奥巴马');
INSERT INTO `s` VALUES ('2', '小布什');
INSERT INTO `s` VALUES ('3', '本拉登');
INSERT INTO `s` VALUES ('4', '普京');
INSERT INTO `s` VALUES ('5', '奥斯特洛夫斯基');-- ----------------------------
-- Table structure for `c`
-- ----------------------------
DROP TABLE IF EXISTS `c`;
CREATE TABLE `c` (`cno` int(11) NOT NULL,`cname` varchar(32) DEFAULT NULL,`cteacher` varchar(32) DEFAULT NULL,PRIMARY KEY (`cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of c
-- ----------------------------
INSERT INTO `c` VALUES ('1', '语文', '李明');
INSERT INTO `c` VALUES ('2', '数学', '爱因斯坦');-- ----------------------------
-- Table structure for `sc`
-- ----------------------------
DROP TABLE IF EXISTS `sc`;
CREATE TABLE `sc` (`sno` int(11) NOT NULL,`cno` int(11) NOT NULL,`sc` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of sc
-- ----------------------------
INSERT INTO `sc` VALUES ('1', '2', '50');
INSERT INTO `sc` VALUES ('1', '1', '50');
INSERT INTO `sc` VALUES ('2', '1', '50');
INSERT INTO `sc` VALUES ('2', '2', '50');
INSERT INTO `sc` VALUES ('3', '1', '60');
INSERT INTO `sc` VALUES ('3', '2', '60');
INSERT INTO `sc` VALUES ('4', '1', '70');
INSERT INTO `sc` VALUES ('4', '2', '70');
INSERT INTO `sc` VALUES ('5', '2', '90');

  1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
答案: 
select s.sname as "不参加李明课程" from s where s.sno not in (select sno from c,sc where c.cteacher="李明" and sc.cno=c.cno)

查询结果图:

钢铁是怎么练成的?不上李明的课写完的.........Orz.开个玩笑.
2.列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
这里为了更清晰,需要修改原始的成绩表.修改如下图.另一个是查询的结果:

分析:这里需要查询的是sname,这个人sc成绩的平均成绩,初步断定其需要用到group by,因为还有个判断是2门以上不及格,那么就是要用到 count(distinct 字段名)>1,因为用到了合计函数,那么需要在他前面用having.

最后的SQL语句为:

select s.sname,AVG(sc.sc)
from sc,s
where sc.sc<60
and s.sno=sc.sno
GROUP BY sc.sno
HAVING COUNT(DISTINCT sc.cno)>1

3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名 

--================初步答案=============
select s.sname from s
where s.sno in(select sc.sno from sc where sc.cno in (select cno from c where cname in ("语文","数学")) group by sc.sno having count(sc.cno)>1)
--================优化==============select s.sname from sc,s where sc.cno in (select cno from c where cname in ("语文","数学")) and sc.sno=s.sno group by sc.sno having count(sc.cno)>1

首先要修改数据,如图,左为修改后的数据库数据,将sno为4的一个cno改为一个并不存在的3,就是说我们在查询的时候不应该查出第四个来.查询结果显示是3个,是对的.

4.列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
select s1.sno,s1.sname
from sc as sc1,sc as sc2,s as s1
where sc1.sno=sc2.sno and sc1.cno=1 and sc2.cno=2 and sc1.sc>sc2.sc  and s1.sno=sc1.sno

5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
select s1.sno,s1.sname,sc1.sc as "1" ,sc2.sc as "2"
from sc as sc1,sc as sc2,s as s1
where sc1.sno=sc2.sno and sc1.cno=1 and sc2.cno=2 and sc1.sc>sc2.sc  and s1.sno=sc1.sno

转载于:https://my.oschina.net/zhaoqian/blog/73301

SQL水平测试题目(一)相关推荐

  1. 高中计算机学业水平测试题目,2016年高中学业水平考试信息技术学科模拟题一(带答案)...

    2016年高中学业水平考试信息技术学科模拟题一(带答案) (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 2016年高中学业水平考 ...

  2. fct计算机模拟测试,复旦计算机水平测试FCT考纲.doc

    复旦计算机水平测试FCT考纲 复旦大学计算机应用能力水平测试(Fudan Computer Skills Test)考试大纲 2011版 一.考试内容: 与非计算机专业本科生培养方案的要求一致,包含四 ...

  3. 文科学业水平测试题软件,学业水平测试:文科备战理科篇

    原标题:学业水平测试:文科备战理科篇 我们文科生的学业水平测试 作为一个文科生,我不知道对于学业水平测试你们是用什么心态去对待的,是看得很重还是丝毫不看重?毕竟除了某些专业有要求之外,一般学校对学业水 ...

  4. 河北计算机辅助普通话试题,115-河北省计算机辅助普通话水平测试培训.pptx

    115-河北省计算机辅助普通话水平测试培训 2010-2011学年度第二学期期末英语水平测评试测结果分析;参加试测学校数:16所 考核目标:与学生生活.学习与职场相关的 听说技能 整卷难度:62.88 ...

  5. 计算机辅助普通话水平测试评分办法,江苏省计算机辅助普通话水平测试评分细则...

    一.根据<普通话水平测试大纲>(教语用[2003]2号)及<计算机辅助普通话水平测试评分试行办法>,结合我省计算机辅助普通话水平测试实际,制定本细则. 二.读单音节字词.读多音 ...

  6. 复旦计算机测试,复旦大学计算机用能力水平测试(Fudan Computer Skills.doc

    复旦大学计算机应用能力水平测试(Fudan Computer Skills Test)考试大纲(2013版) 一.考试内容: 与非计算机专业本科生培养方案的要求一致,包含四个部分:办公自动化.多媒体. ...

  7. 复旦大学计算机应用能力,复旦大学计算机应用能力水平测试(FudanComputerSkills.doc...

    复旦大学计算机应用能力水平测试(FudanComputerSkills.doc 复旦大学计算机应用能力水平测试(Fudan Computer Skills Test)考试大纲(2013版)一.考试内容 ...

  8. 安徽计算机学业水平测试内容,【2017年整理】安徽省学业水平测试信息技术(必修)知识点.doc...

    [2017年整理]安徽省学业水平测试信息技术(必修)知识点 第一章 信息与信息技术 1. 香农信息是用来消除不确定性的东西维纳信息就是信息,不是物质,也不是能量钟义信信息是事物运动的状态和方式物质能量 ...

  9. 青少年计算机等级测试内容,青少年人工智能技术水平测试一级等级考试介绍

    原标题:青少年人工智能技术水平测试一级等级考试介绍 考试介绍 考试级别 青少年人工智能技术水平测试共划分为10个等级,逐级进行考核(难度逐级提升). 参加考试对象:青少年,具体级别的难易程度所对应水平 ...

最新文章

  1. MATLAB环境认识实验报告,matlab实验报告ljg
  2. Apple Mac OS X每日一技巧026:Spotlight打开文件所在的文件夹
  3. mvn spring-boot:run 增加jvm启动参数
  4. python不满足条件重新输入_在python里为何不满足while条件,while里语句却可以执行?...
  5. 360互联网技术训练营第18期——AIOps落地实践探索 火热报名中!
  6. c语言追踪机械腿位置,基于传感器的下肢可穿戴机械腿软件系统设计与实现
  7. python方法测试怀孕_在Python中测试私有方法(例外)
  8. 2017-07-12(数据库)
  9. 企业软件 - 创新尝试 - 用友 股份 产业链创新中心 - 产品流程会议问题解决 - 杨天政 - 原型产品发版标准 - 2014-3-13
  10. cv :: cvtColor
  11. 淘宝新店刚开详情页到底需要怎么做
  12. 邮件客户端开源_5个最佳开源环境电子邮件客户端
  13. (4.3C)神奇的口袋
  14. hbase major compact脚本
  15. 编写判断一个正整数是否为素数的函数
  16. 正则表达式——文本处理的“东风导弹”
  17. 这个必用的开发框架,是多少程序员头秃的存在?
  18. 羽毛球馆网上租赁系统的设计与实现
  19. java ssm开发酒店管理,Ssm+Mysql实现的Java Web酒店管理系统毕设指导思路模板
  20. python怎么用switch,Python 能开发任天堂Switch应用??奉上教程!

热门文章

  1. vue 刷新嵌套路由_vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法...
  2. eppp如何导入php文件_PHP如何处理文件权限?(代码示例)
  3. mysql中的explain_mysql中的explain分析
  4. python爬虫十二种方法_Python爬虫的N种姿势
  5. 算数运算符与关系运算符_【Flutter 110】Flutter手把手教程Dart语言——运算符
  6. python类的构造方法和assert的使用,用MethodType动态绑定类方法
  7. java字节对齐原则_C struct 中字节对齐问题
  8. 计算机考研哈理工好吗,哈尔滨理工大学考研难吗?一般要什么水平才可以进入?...
  9. 20211027:《Labuladong的算法小抄》学习记录(一)
  10. VB 文件编码互换模块(支持 Ansi,UTF-8,Unicode(little endian),Unicode big endian)