数据库题目:张三的 MySQL 学习之路(一)
题目:张三的 MySQL 学习之路(一)
题目难度:困难
题目描述:张三最近对 MySQL 数据库感兴趣,决定要好好学习数据库,但…学习的道路总是充满艰辛的。张三今天遇到了一个难题,他左思右想、苦思冥想、茶不思饭不想也没能想出解决办法。情况是这样的,现有 teachers 表中记录着离职的教师信息,id 的值即是教师离职的顺序,在 courses 表中记录着每个教师教授的课程信息,关联 id 为 teacher_id。
现在知道教师是以国籍来分团队的,且每个团队的成立至少有 3 个教师,若是一个教师团队集体离职,则在 teachers 表中信息记录为连续且国籍相同,现在需要统计每一个教师团队集体离职会有多少学生需要等待新的教师,结果按团队国籍排序。
他需要创建一个视图 v_courses_teachers 来解决这个问题~
表定义 1: teachers (教师表)
注意:这里的教师表里面的教师全部都是要离职的,不用考虑10个老师有3个离职这样的的情况
表定义 2: courses (课程表)
结果视图定义: v_courses_teachers(视图)
样例
输入数据:
courses 表:
teachers 表:
返回结果:
解题思路
如上面所示,现在的teachers 表中记录着离职的教师信息(可以理解全部都是要离职的教师),id 的值即是教师的顺序。在 courses 表中记录着每个教师教授的课程信息,关联 id 为 teacher_id。已知教师是以国籍来分团队的,且每个团队的成立至少有 3 个教师(没有3个老师及以上不能成立教师团队),现在需要统计每一个教师团队集体离职会有多少学生需要等待新的教师(即统计这些离职教师之前所教学生的总数之和),结果按团队国籍排序。他需要创建一个视图 v_courses_teachers 来解决这个问题。
分析题目要求:
条件一:找出符合要求的团队国籍
条件二:根据国籍,找出对应的教师的 id
条件三:根据教师 id 找出对应的学生,并对学生数进行求和
根据题目要求,要创建一个 v_courses_teachers 视图
源代码
-- Write your SQL here --
create view v_courses_teachers as
select t.country, sum(student_count) as student_count
from teachers as t
left join courses as c
on t.id = c.teacher_id
where((t.country = (select country from teachers where id = t.id + 1) and t.country = (select country from teachers where id = t.id + 2))or (t.country = (select country from teachers where id = t.id - 1) and t.country = (select country from teachers where id = t.id - 2))or(t.country = (select country from teachers where id = t.id + 1) andt.country = (select country from teachers where id = t.id - 1)))
group by t.country
order by t.country;
提交结果
笨猫猫的写法有点小菜,用了20分钟才写出来,可能还有更好的解法哦!
数据库题目:张三的 MySQL 学习之路(一)相关推荐
- MySQL学习之路 一 : MySQL 5.7.19 源码安装
MySQL 5.7.19 源码安装 查看系统: # cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 安装依赖包 # yum - ...
- MySQL学习之路(5) - 数据库事务、视图、触发器、函数
目录 一.什么是事务#%E4%B8%80%E3%80%81%E4%BB%80%E4%B9%88%E6%98%AF%E4%BA%8B%E5%8A%A1 事务控制语句 怎么设置自动提交 回滚运用的场景 脏 ...
- MySQL学习之路(五):MySQL删除数据库
DROP DATABASE语句 当数据库不再使用时应该将其删除,以确保数据库存储空间中存放的是有效数据.删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除. 在 ...
- MySQL学习之路(一):Windows平台下MySQL安装、启动、连接
MySQL安装.启动.连接. 一.MySQL的基本介绍: (更好的阅读体验,请移步我的个人博客) MySQL是一款优秀的关系型数据库系统(数学模型基于关系代数),以其优秀的性能和开放源代码的许可而广泛 ...
- 别瞎学了,我的MySQL学习之路(超详细超硬核)
大家好,我是帅地. 在之前校招面试中,mysql 被问到频率是真的高,当初为了能够在 mysql 这块加分,看了不少书籍,在网上也找了不少资料,走了不少弯路,庆幸的是,每次面试官问到 mysql 相关 ...
- 数据库查询张三的MYSQL成绩_MySQL数据库查询练习题
练习题目 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 1.1 查询同时存在" 01 "课程和" 02 &q ...
- MySQL学习之路:多实例无法启动排错
由于我们的服务器会借给我们部分公司使用,但是部分公司有没有运维,都是开发直接操作,导致出现一些问题后直接来找我处理.为此,也学习到很多. 近来,一哥们由于不知道操作什么导致服务器直接挂掉,于是我联系机 ...
- mysql学习之路三(转)
创建MYSQL索引 mysql> create procedure p_test() -> begin -> declare counter int; -> set count ...
- MySQL学习之路(一):使用命令行登录mysql的方式
一.打开命令行 二.输入 mysql [-h主机名 -P端口号 ]-u用户名 -p密码 1. 如果是登录本地的数据库则可以不用输入主机名和端口号,直接输入 mysql -u用户名 -p密码即可 小提示 ...
最新文章
- 【JDK源码】Iterator与Iterable的实现与区别
- 代码注释规范-google版本
- 统一建模语言UML轻松入门系列
- python-sendcmd被动模式访问ftp
- 【树形DP】没有上司的晚会 (ssl 1607)
- 从Grunt测试Grunt插件
- 【Demo 0011】多媒体播放器
- RabbitMQ和Kafka的显著差异(6)
- Cache related website
- java中element转换_java中实体类与xml的element相互转换
- Cassandra Leveled Compaction源码阅读
- python自我复制的程序_Python自我
- Linux绚丽屏保xscreensaver安装
- 什么是敏捷开发(Scrum)?
- 标识符的命名规则和规范
- 解决Mysql计算时除数为0
- 对话“第二人生”创始人:这不是一款游戏
- ASP.NET 安全认证(三)
- aspectsof的意思_aspect of是什么意思
- mariadb master and salve configure