| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 【DW组队学习—Wonderful SQL】决胜秋招 -> 正文阅读 |
|
[大数据]【DW组队学习—Wonderful SQL】决胜秋招 |
目录 练习四:MySQL 中如何查看sql语句的执行计划?可以看到哪些信息? 练习六: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’是叶子节点,因为它们有父节点但没有子节点。 下面是树的图形: ? 注意: 如果一个树只有一个节点,只需要输出根节点属性。 ? 【注】使用CASE谓词时注意不要漏掉结尾的END。 练习六:至少有五名直接下属的经理 (难度:中等)Employee表包含所有员工及其上级的信息。每位员工都有一个Id,并且还有一个对应主管的Id(ManagerId)。 ? ? 针对Employee表,写一条SQL语句找出有5个下属的主管。对于上面的表,结果应输出: ? 注意: 没有人向自己汇报。 ? 练习七:查询回答率最高的问题 (难度:中等)求出survey_log表中回答率最高的问题,表格的字段有:uid, action, question_id, answer_id, q_num, timestamp。 uid是用户id;action的值为:“show”, “answer”, “skip”;当action是"answer"时,answer_id不为空,相反,当action是"show"和"skip"时为空(null);q_num是问题的数字序号。 写一条sql语句找出回答率(show 出现次数 / answer 出现次数)最高的 question_id。 ? ? 说明 问题285的回答率为1/1,然而问题369的回答率是0/1,所以输出是285。 注意: 最高回答率的意思是:同一个问题出现的次数中回答的比例。 ? *这个题感觉有点钻牛角尖了,想简化但是不知道怎么实现 练习八:各部门前3高工资的员工(难度:中等)将练习一中的 employee 表清空,重新插入以下数据(也可以复制练习一中的 employee 表,再插入第5、第6行数据): ? ? 编写一个 SQL 查询,找出每个部门工资前三高的员工。例如,根据上述给定的表格,查询结果应返回: ? 此外,请考虑实现各部门前N高工资的员工功能。 ? 练习九:平面上最近距离 (难度: 困难)point_2d表包含一个平面内一些点(超过两个)的坐标值(x,y)。 写一条查询语句求出这些点中的最短距离并保留2位小数。 ? ? 最短距离是1,从点(-1,-1)到点(-1,-2)。所以输出结果为: ? 注意: 所有点的最大距离小于10000。 ? 练习十:行程和用户(难度:困难)Trips 表中存所有出租车的行程信息。每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键。Status 是枚举类型,枚举成员为 (‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’)。 ? ? Users 表存所有用户。每个用户有唯一键 Users_Id。Banned 表示这个用户是否被禁止,Role 则是一个表示(‘client’, ‘driver’, ‘partner’)的枚举类型。 ? ? 写一段 SQL 语句查出2013年10月1日至2013年10月3日期间非禁止用户的取消率。基于上表,你的 SQL 语句应返回如下结果,取消率(Cancellation Rate)保留两位小数。 ? ? Section B练习一:行转列假设 A B C 三位小朋友期末考试成绩如下所示: ? ? 请使用 SQL 代码将以上成绩转换为如下格式: ? ? 练习二:列转行假设 A B C 三位小朋友期末考试成绩如下所示: ? ? 请使用 SQL 代码将以上成绩转换为如下格式: ? ? 练习三:谁是明星带货主播?假设,某平台2021年主播带货销售额日统计数据如下: 表名 anchor_sales ? ? 定义:如果某主播的某日销售额占比达到该平台当日销售总额的 90% 及以上,则称该主播为明星主播,当天也称为明星主播日。 请使用 SQL 完成如下计算:
【注】根据条件,每天只有一位主播可能达到标准,所以不加distinct也可以。但若是将标准改为40%以上,则极有可能出现重复项,此时需要考虑去除重复项。 ?
【注】会有一个人多次符合明星主播的条件,所以要筛选不重复项 ? 练习四:MySQL 中如何查看sql语句的执行计划?可以看到哪些信息?Mysql中查看执行计划的方式有两种:使用它俩的效果是一样的
可以获取信息如下: ?
练习五:解释一下 SQL 数据库中 ACID 是指什么ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。 ·原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 ·一致性(Consistency) 事务前后数据的完整性必须保持一致。 ·隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。 ·持久性(Durability) 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。 具有ACID特性的数据库支持强一致性,强一致性代表数据库本身不会出现不一致,每个事务是原子的,或者成功或者失败,事物间是隔离的,互相完全不影响,而且最终状态是持久落盘的,因此,数据库会从一个明确的状态到另外一个明确的状态,中间的临时状态是不会出现的,如果出现也会及时的自动的修复,因此是强一致的。 Section C练习一:行转列假设有如下比赛结果: ? ? 请使用 SQL 将比赛结果转换为如下形式: ? ? 练习二:列转行假设有如下比赛结果: ? ? 请使用 SQL 将比赛结果转换为如下形式: ? *这道题没有啥简便的思路,总不能一直union吧。。。 练习三:连续登录有用户表行为记录表t_act_records表,包含两个字段:uid(用户ID),imp_date(日期) 构造表mysql如下: ? ?
练习四:用户购买商品推荐假设现在需要根据算法给每个 user_id 推荐购买商品,推荐算法比较简单,推荐和他相似的用户购买过的 product 即可,说明如下: ·排除用户自己购买过的商品 ·相似用户定义:曾经购买过 2 种或 2 种以上的相同的商品 ? ?练习五:hive 数据倾斜的产生原因及优化策略?练习六:LEFT JOIN 是否可能会出现多出的行?为什么?假设 t1 表有6行(关联列 name 有2行为空),t2 表有6行(关联列 name 有3行为空), 那么 SELECT * FROM t1 LEFT JOIN t2 on t1.name = t2.name 会返回多少行结果? 可以参考下图 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:15:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |