【DW组队学习—Wonderful SQL】决胜秋招

目录

Ch6.决胜秋招

Section A

练习一:各部门工资最高的员工(难度:中等)

练习二: 换座位(难度:中等)

练习三: 分数排名(难度:中等)

练习四:连续出现的数字(难度:中等)

练习五:树节点 (难度:中等)

练习六:至少有五名直接下属的经理 (难度:中等)

练习七:查询回答率最高的问题 (难度:中等)

练习八:各部门前3高工资的员工(难度:中等)

练习九:平面上最近距离 (难度: 困难)

练习十:行程和用户(难度:困难)

Section B

练习一:行转列

练习二:列转行

练习三:谁是明星带货主播?

练习四:MySQL 中如何查看sql语句的执行计划?可以看到哪些信息?

练习五:解释一下 SQL 数据库中 ACID 是指什么

Section C

练习一:行转列

练习二:列转行

练习三:连续登录

练习四:用户购买商品推荐

 练习五:hive 数据倾斜的产生原因及优化策略?

练习六:LEFT JOIN 是否可能会出现多出的行?为什么?


Ch6.决胜秋招

Section A

练习一:各部门工资最高的员工(难度:中等)

创建Employee 表,包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。

创建Department 表,包含公司所有部门的信息。

 

 

编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。

 

 

每个派生表都要有别名

练习二: 换座位(难度:中等)

小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。

其中纵列的id是连续递增的

小美想改变相邻俩学生的座位。

你能不能帮她写一个 SQL query 来输出小美想要的结果呢?

请创建如下所示seat表:

 

 

假如数据输入的是上表,则输出结果如下:

 

注意:

如果学生人数是奇数,则不需要改变最后一个同学的座位。

*这题自己没有想出做法(看了答案之后发现是自己想的复杂了,我还想了用存储过程......),查了一下别人的答案,下面这个答案是通过更改ID号实现结果

 

练习三: 分数排名(难度:中等)

假设在某次期末考试中,二年级四个班的平均成绩分别是 93、93、93、91。

 

 

目前有如下三种排序结果,请根据查询结果书写出查询用 sql。

 

通过观察排序结果可以发现,其分别对应专用窗口函数中3中不同排序函数的排序结果。

 

练习四:连续出现的数字(难度:中等)

编写一个 SQL 查询,查找所有至少连续出现三次的数字。

 

 

例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。

 

*这道题也是自己想的有点复杂了(考虑了使用移动平均),参考了网上的做法,进行多表连接,将连续的3个值连成一行然后进行筛选并去重(考虑到有3个以上连续的可能会筛出重复值)。

 

练习五:树节点 (难度:中等)

对于tree表,id是树节点的标识,p_id是其父节点的id。

 

 

每个节点都是以下三种类型中的一种:

Root: 如果节点是根节点。

Leaf: 如果节点是叶子节点。

Inner: 如果节点既不是根节点也不是叶子节点。

写一条查询语句打印节点id及对应的节点类型。按照节点id排序。上面例子的对应结果为:

 

说明:

节点’1’是根节点,因为它的父节点为NULL,有’2’和’3’两个子节点。

节点’2’是内部节点,因为它的父节点是’1’,有子节点’4’和’5’。

节点’3’,‘4’,'5’是叶子节点,因为它们有父节点但没有子节点。

下面是树的图形:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值