DW集训营数据库Mysql梳理[五]

  • 1 任务
  • 2 数据导入导出
    • 2.1将Excel文件导入MySQL表
    • 2.2 MySQL表导出表到Excel文件
  • 3 作业
    • 3.1 各部门工资最高的员工
    • 3.2 换座位
    • 3.3 分数排名
  • 参考

1 任务

任务五学习内容
数据导入导出 (见附件)将Excel文件导入MySQL表MySQL导出表到Excel文件
作业
项目七: 各部门工资最高的员工(难度:中等)
创建Employee 表,包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。
+----+-------+--------+--------------+
| Id | Name  | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1  | Joe   | 70000  | 1            |
| 2  | Henry | 80000  | 2            |
| 3  | Sam   | 60000  | 2            |
| 4  | Max   | 90000  | 1            |
+----+-------+--------+--------------+
创建Department 表,包含公司所有部门的信息。
+----+----------+
| Id | Name     |
+----+----------+
| 1  | IT       |
| 2  | Sales    |
+----+----------+
编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT         | Max      | 90000  |
| Sales      | Henry    | 80000  |
+------------+----------+--------+项目八: 换座位(难度:中等)
小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。
其中纵列的 id 是连续递增的
小美想改变相邻俩学生的座位。
你能不能帮她写一个 SQL query 来输出小美想要的结果呢?请创建如下所示seat表:
示例:
+---------+---------+
|    id   | student |
+---------+---------+
|    1    | Abbot   |
|    2    | Doris   |
|    3    | Emerson |
|    4    | Green   |
|    5    | Jeames  |
+---------+---------+
假如数据输入的是上表,则输出结果如下:
+---------+---------+
|    id   | student |
+---------+---------+
|    1    | Doris   |
|    2    | Abbot   |
|    3    | Green   |
|    4    | Emerson |
|    5    | Jeames  |
+---------+---------+
注意:
如果学生人数是奇数,则不需要改变最后一个同学的座位。项目九:  分数排名(难度:中等)
编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。
创建以下score表:
+----+-------+
| Id | Score |
+----+-------+
| 1  | 3.50  |
| 2  | 3.65  |
| 3  | 4.00  |
| 4  | 3.85  |
| 5  | 4.00  |
| 6  | 3.65  |
+----+-------+
例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):
+-------+------+
| Score | Rank |
+-------+------+
| 4.00  | 1    |
| 4.00  | 1    |
| 3.85  | 2    |
| 3.65  | 3    |
| 3.65  | 3    |
| 3.50  | 4    |
+-------+------+

2 数据导入导出

附件excel文件已存百度网盘:附件excel

2.1将Excel文件导入MySQL表

将Excel文件导入到Navicat for MySQL数据库

  1. 根据excel的文件类型,在数据库的表页面运行’导入向导’,选择导入数据的类型:
  2. 选择Excel文件的位置,选择文件数据源,并导入数据源中的表,这里我导入xlsx失败,于是将xlsx文件保存为xls进行导入:
  3. 选择目标表,也可以新建一个表将数据插入:
  4. 设定主键
  5. 选择导入模式,如果是新建表,则选择第一项–添加记录到目标表:
  6. 导入成功
  7. 对表进行操作
    通过上述步骤将excel文件导入到Navicat数据库中,在数据表窗口中,通过’+‘和’-'可以实现插入和删除一条记录,当要遍历每一列添加内容时,使用’Tab’键即可依次往下添加数据。

2.2 MySQL表导出表到Excel文件

  1. 根据表的右键选择导出向导;
  2. 选择要导出的数据表格式,这里我们选择的是xls表格格式;
  3. 接下来选择需要导出的表,并设置导出文件的位置,然后点击下一步:
  4. 导出成功
  5. 在保存的位置,可以看到导出的数据表成功

3 作业

3.1 各部门工资最高的员工

先建立表并插入数据:

CREATE TABLE IF NOT EXISTS Employee(Id SMALLINT PRIMARY KEY AUTO_INCREMENT,Name VARCHAR(20) NOT NULL,Salary INT NOT NULL,DepartmentId TINYINT NOT NULL
);
CREATE TABLE IF NOT EXISTS Department(Id SMALLINT PRIMARY KEY AUTO_INCREMENT,Name VARCHAR(20) NOT NULL
);INSERT Employee(Name,Salary,DepartmentId)
Values('Joe',70000,1),('Henry',80000,2),('Sam',60000,2),('Max',90000,1);INSERT Department(Name)
Values('IT'),('Sales');

在处理这个问题的思路上,我首先先将表连接,再对连接好的表来设置条件,设置的条件为:对应的id相同,并且使用子查询的方式筛选出了最大值,这里要注意的是,因为题目有最终数据表的格式,所以再select中的命名需要起别名:

SELECT d.Name as Department,e.Name as Employee,e.Salary
FROM Employee e,Department d
WHERE e.DepartmentId = d.Id
and e.Salary = (SELECT MAX(Employee.Salary)FROM EmployeeWHERE Employee.DepartmentId = d.Id);

3.2 换座位

同样,我们先创建表结构并且插入数据:

CREATE TABLE IF NOT EXISTS seat(id TINYINT PRIMARY KEY AUTO_INCREMENT,student VARCHAR(20) NOT NULL
);
INSERT seat(student)
VALUES('Abbot'),('Doris'),('Emerson'),('Green'),('Jeames');

接下来考虑交换相邻的座位,如果是奇数的话,则最后一个座位不用变,这里考虑的是使用case when的条件语句:

SELECT (CASE
WHEN id=counts THEN id
WHEN MOD(id,2)=0 THEN id-1
ELSE id+1 END) AS id,student
FROM seat
,(SELECT COUNT(id) AS counts FROM seat)
ORDER BY id;

3.3 分数排名

编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。
首先创建表以及插入语句:

-----创建表
CREATE TABLE IF NOT EXISTS score(Id TINYINT PRIMARY KEY AUTO_INCREMENT,Score FLOAT(5,2) NOT NULL
);
-----插入表
INSERT score(Score)
VALUES('3.50'),('3.65'),('4.00'),('3.85'),('4.00'),('3.65');

现在的问题是,如何select出score,并且还select出score的排名?现在有一个思路是:所谓的现在的排名,实质上表示的意思是当前大于或等于其对应分数的数字,比如4,还有相同的分数4,那么其对应的排名应该是1。于是我们需要在score表中找出大于或者等于该分数的不重复的分数,然后降序排列:

SELECT Score,(SELECT COUNT(DISTINCT Score)FROM score AS s2 WHERE s2.Score>=s1.Score)
FROM score AS s1
ORDER BY Score DESC;

参考

MySQL实现

DW集训营数据库Mysql梳理[五]相关推荐

  1. DW集训营算法基础梳理任务1:线性回归

    DW集训营数据库基础算法梳理[一] 一. 损失函数的极大似然推导 二. 一元线性回归的参数求解公式推导 三. 多元线性回归的参数求解公式推导 四. 线性回归损失函数的最优化算法 一. 损失函数的极大似 ...

  2. 2021牛客OI赛前集训营-提高组(第五场)D-牛牛的border【SAM】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/20110/D 题目大意 求一个长度为nnn的字符串的所有子串的borderborderborder长度和. 1 ...

  3. 2021牛客OI赛前集训营-提高组(第五场)C-第K排列【dp】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/20110/C 题目大意 一个长度为nnn的字符串SSS,SSS中存在一些???,有N/O/I/PN/O/I/P ...

  4. MySQL数据库基础(五)——SQL查询

    MySQL数据库基础(五)--SQL查询 一.单表查询 1.查询所有字段 在SELECT语句中使用星号""通配符查询所有字段 在SELECT语句中指定所有字段 select fro ...

  5. Mysql(五)Mysql架构、数据库优化、主从复制

    文章目录 一.Mysql架构 1.1 查询语句的执行过程 1.1.1 连接器 1.1.2 查询缓存 1.1.3 分析器 1.1.4 优化器 1.1.5 执行器 1.1.6 存储引擎 1.1.7 执行引 ...

  6. alin的学习之路(数据库篇:五)(MySQL的相关语句及API的C语言实现)

    alin的学习之路(数据库篇:五)(MySQL的相关语句及API的C语言实现) 1. MySQL概述与登陆MySQL mysql 与 oracle 的区别 oracle 是一个数据库实例下有多个用户, ...

  7. 关系型数据库之Mysql备份(五)

    二进制日志简要: 二进制日志通常作为备份的重要资源,所以再说备份之前我们来回顾下前面专题讲过的二进制日志内容. 1.二进制日志内容 引起mysql服务器改变的任何操作. 复制功能依赖于此日志. 从服务 ...

  8. 梳理百年深度学习发展史-七月在线机器学习集训营助你把握深度学习浪潮

    作为机器学习最重要的一个分支,深度学习近年来发展迅猛,在国内外都引起了广泛的关注.然而深度学习的火热也不是一时兴起的,而是经历了一段漫长的发展史.接下来我们了解一下深度学习的发展历程. 1. 深度学习 ...

  9. 【面经专栏】成建制面经大杂烩【C++面经】【操作系统面经】【计算机网络面经】【数据库MySQL/Redis面经】

    2021年秋季招聘接近尾声,也是时候整理一些自己的面试问题总结了.在7月中旬到9月末开始,陆续整理了以下C++后端岗位的面试问题. 关于来源: 标注[牛客]的部分题目来自牛客上的面试题目,安利一下牛客 ...

  10. 腾讯云 Finops Crane 开发者集训营 - 让云不再“钱”途无量

    前言: Finops Crane集训营主要面向广大开发者,旨在提升开发者在容器部署.K8s层面的动手实践能力,同时吸纳Crane开源项目贡献者,鼓励开发者提交issue.bug反馈等,并搭载线上直播. ...

最新文章

  1. lamp介绍,wordpress,phpmyadmin,discuzz安装
  2. Win 8 自定义设置面版
  3. m3u8文件在手机上用什么软件看_新技能Get!教你制作m3u8文件 创建属于自己的直播视频列表...
  4. android 导航动画,安利一个Android导航库
  5. JavaScript数组方法速查手册
  6. Ontology与OO作为一种需求分析或软件构建方法的存在意义
  7. import python settings from_python settings 中通过字符串导入模块
  8. 使用对象-关系映射持久化数据
  9. 我为什么坚持写博客?
  10. Linux安装Prometheus
  11. QFIL进入900E或90DB模式,download fail
  12. 软考高项--第一章项目整体管理
  13. 自动化c语言课程设计,自动化与电气工程学院C语言课程设计报告.doc
  14. iOS中storyboard故事板使用Segue跳转界面、传值
  15. HC Bridge容器网络模式分享
  16. 邮箱手动修改服务器配置,邮箱登录手动修改服务器配置
  17. 淘宝客订单查询API参数说明
  18. 各大日语学习网站整理
  19. python中的pass是什么意思_Python中pass的作用与使用教程
  20. 单细胞转录组分析R包安装

热门文章

  1. 数学模型:优化模型(一)存贮问题
  2. onlyoffice添加中文字体及字号
  3. 只有搞Java开发的才知道!javaspring菜鸟教程
  4. 量子计算机预测未来,太厉害了吧?这台量子计算机能预测16种不同的未来!
  5. 大学四年,我把私藏的自学「学习网站/实用工具」都贡献出来了
  6. 微信公众号-推送模板消息
  7. xv6 syscall实验
  8. DDA数值微分法详解
  9. EMeeting会议预约系统软件,会议预约新方案
  10. Oracle使用Shell脚本导出Excel表格