1. 任务背景
Datawhale组队学习中MySQL一周学习任务,通过一周组队自主学习,快速熟悉MySQL相关基础知识,并能掌握基本的数据查询操作方式
1.1 任务内容
这次是纯作业形式
2. 作业一 行程和用户(难度:困难)
2.1 任务内容
1 | Trips 表中存所有出租车的行程信息。每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键。Status 是枚举类型,枚举成员为 (‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’)。 |
2.2 建表和数据导入
1 | CREATE TABLE IF NOT EXISTS `trips` ( |
2.3 作业思路
这个其实就是联结两个表,然后根据不同的条件找出所需要的值,对于这里判断是不是取消的,可以用CASE WHEN的方式配合SUM函数来统计
2.4 代码实现
1 | SELECT request_at AS 'Day', |
结果如下
1 | +---------------------+-------------------+ |
3. 作业二 各部门前3高工资的员工(难度:中等)
3.1 作业内容
1 | 将昨天employee表清空,重新插入以下数据(其实是多插入5,6两行): |
3.2 建表和数据导入
1 | TRUNCATE employee; |
3.3 作业思路
可以反复查找employee表两次,取top3,可以理解为最多只有2个比其值大,或者说比其值大的少于3个
3.4 代码实现
1 | SELECT department.name as Department, e1.name, e1.salary |
结果如下
1 | +------------+-------+--------+ |
4. 作业三 分数排名 - (难度:中等)
4.1 作业内容
1 | 依然是昨天的分数表,实现排名功能,但是排名是非连续的,如下: |
4.2 建表和数据导入
因为表格已经建立,此时不需要再额外建表
4.3 作业思路
统计不连续的排名,直接看有多少成绩比其大即可
4.4 代码实现
1 | SELECT s1.score AS Score, |
结果如下
1 | +-------+------+ |