前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7天快速掌握MySQL-DAY6

7天快速掌握MySQL-DAY6

作者头像
披头
发布2019-12-26 10:48:18
2420
发布2019-12-26 10:48:18
举报
文章被收录于专栏:datartisandatartisan

首先公布一下DAY5的作业答案。

项目七:

代码语言:javascript
复制
--code--
CREATE TABLE Employee
 (
 Id INT NOT NULL PRIMARY KEY,
 Name VARCHAR(50)  NOT NULL,
 Salary INT NOT NULL,
 Departmentid  INT  NOT NULL
 )  ;
 
INSERT INTO Employee(Id,Name,Salary,Departmentid) VALUES (1,'Joe',70000,1);
INSERT INTO Employee(Id,Name,Salary,Departmentid) VALUES (2,'Henry',80000,2);
INSERT INTO Employee(Id,Name,Salary,Departmentid) VALUES (3,'Sam',60000,2);
INSERT INTO Employee(Id,Name,Salary,Departmentid) VALUES (4,'Max',90000,1);
 ---------------------------
CREATE TABLE Department ( 
Id INT NOT NULL PRIMARY KEY, 
Name VARCHAR(50)  NOT NULL );
 
INSERT INTO Department(Id,Name) VALUES (1,'IT');
INSERT INTO Department(Id,Name) VALUES (2,'Sales');
--------------------------------
mysql> SELECT
    -> b.Name AS Department,
    -> a.Name AS Employee,
    -> MAX(a.Salary) AS Salary
    -> FROM Employee AS a
    -> INNER JOIN Department AS b
    -> ON a.Departmentid = b.Id
    -> GROUP BY b.Name ;
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT         | Joe      |  90000 |
| Sales      | Henry    |  80000 |
+------------+----------+--------+
2 rows in set (0.00 sec)

项目八:

代码语言:javascript
复制
mysql> CREATE TABLE seat
    -> (
    -> id INT NOT NULL ,
    -> student VARCHAR(50) NOT NULL
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO seat(id,student) VALUES (1,'Abbot');
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO seat(id,student) VALUES (2,'Doris');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO seat(id,student) VALUES (3,'Emerson');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO seat(id,student) VALUES (4,'Green');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO seat(id,student) VALUES (5,'Jeames');
Query OK, 1 row affected (0.00 sec)
--找出最大值,判断奇偶
mysql> select max(id) as max_id from seat;
+--------+
| max_id |
+--------+
|      5 |
+--------+
1 row in set (0.00 sec)


mysql> update seat set id =
    -> case
    -> when id = 5 then 5 # 最大id奇数,不变
    -> when mod (id, 2) = 1 then id + 1
    -> else id -1
    -> end;
Query OK, 4 rows affected (0.01 sec)
Rows matched: 5  Changed: 4  Warnings: 0

mysql> select * from seat;
+----+---------+
| id | student |
+----+---------+
|  2 | Abbot   |
|  1 | Doris   |
|  4 | Emerson |
|  3 | Green   |
|  5 | Jeames  |
+----+---------+
5 rows in set (0.00 sec)

继续今日DAY6内容:

本期只有作业

项目九:行程和用户(难度:困难)

代码语言:javascript
复制
Trips 表中存所有出租车的行程信息。每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 
Users_Id 的外键。Status 是枚举类型,枚举成员为
 (‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’)。
+----+-----------+-----------+---------+--------------------+----------+
| Id | Client_Id | Driver_Id | City_Id |        Status      |Request_at|
+----+-----------+-----------+---------+--------------------+----------+
| 1  |     1     |    10     |    1    |     completed      |2013-10-01|
| 2  |     2     |    11     |    1    | cancelled_by_driver|2013-10-01|
| 3  |     3     |    12     |    6    |     completed      |2013-10-01|
| 4  |     4     |    13     |    6    | cancelled_by_client|2013-10-01|
| 5  |     1     |    10     |    1    |     completed      |2013-10-02|
| 6  |     2     |    11     |    6    |     completed      |2013-10-02|
| 7  |     3     |    12     |    6    |     completed      |2013-10-02|
| 8  |     2     |    12     |    12   |     completed      |2013-10-03|
| 9  |     3     |    10     |    12   |     completed      |2013-10-03| 
| 10 |     4     |    13     |    12   | cancelled_by_driver|2013-10-03|
+----+-----------+-----------+---------+--------------------+----------+
Users 表存所有用户。每个用户有唯一键 Users_Id。Banned 表示这个用户是否被禁止,Role 则是一个表示
(‘client’, ‘driver’, ‘partner’)的枚举类型。
+----------+--------+--------+
| Users_Id | Banned |  Role  |
+----------+--------+--------+
|    1     |   No   | client |
|    2     |   Yes  | client |
|    3     |   No   | client |
|    4     |   No   | client |
|    10    |   No   | driver |
|    11    |   No   | driver |
|    12    |   No   | driver |
|    13    |   No   | driver |
+----------+--------+--------+
写一段 SQL 语句查出 2013年10月1日 至 2013年10月3日 期间非禁止用户的取消率。基于上表,你的 SQL 语句
应返回如下结果,取消率(Cancellation Rate)保留两位小数。
+------------+-------------------+
|     Day    | Cancellation Rate |
+------------+-------------------+
| 2013-10-01 |       0.33        |
| 2013-10-02 |       0.00        |
| 2013-10-03 |       0.50        |
+------------+-------------------+

项目十:各部门前3高工资的员工(难度:中等)

代码语言:javascript
复制
将昨天employee表清空,重新插入以下数据(其实是多插入5,6两行):
+----+-------+--------+--------------+
| Id | Name  | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1  | Joe   | 70000  | 1            |
| 2  | Henry | 80000  | 2            |
| 3  | Sam   | 60000  | 2            |
| 4  | Max   | 90000  | 1            |
| 5  | Janet | 69000  | 1            |
| 6  | Randy | 85000  | 1            |
+----+-------+--------+--------------+
编写一个 SQL 查询,找出每个部门工资前三高的员工。例如,根据上述给定的表格,查询结果应返回:
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT         | Max      | 90000  |
| IT         | Randy    | 85000  |
| IT         | Joe      | 70000  |
| Sales      | Henry    | 80000  |
| Sales      | Sam      | 60000  |
+------------+----------+--------+

此外,请考虑实现各部门前N高工资的员工功能。

项目十一: 分数排名 - (难度:中等)

代码语言:javascript
复制
依然是昨天的分数表,实现排名功能,但是排名是非连续的,如下:
+-------+------+
| Score | Rank |
+-------+------+
| 4.00  | 1    |
| 4.00  | 1    |
| 3.85  | 3    |
| 3.65  | 4    |
| 3.65  | 4    |
| 3.50  | 6    |
+-------+------+

答案明天揭晓。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐享数据8090 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本期只有作业
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档