每天一道大厂SQL题【Day07】教育领域SQL实战

news2025/1/11 20:50:32

每天一道大厂SQL题【Day07】教育领域SQL实战

大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题,以每日1题的形式,带你过一遍热门SQL题并给出恰如其分的解答。

一路走来,随着问题加深,发现不会的也愈来愈多。但底气着实足了不少,相信不少朋友和我一样,日积月累才是最有效的学习方式!

本题共有10道小题,有基础的小伙伴可直接从第8题开始写~

每日语录

今天说早安,她温柔的回了一句傻B,我好开心,她肯定一直在关心我。不然怎么会说我是傻baby呢?

image-20230206161744895

第7题:电商购买金额统计实战

1.1 需求

现有图书管理数据库的三个数据模型如下: 图书(数据表名:BOOK)

序号字段名称字段描述字段类型
1BOOK_ID总编号文本
2SORT分类号文本
3BOOK_NAME书名文本
4WRITER作者文本
5OUTPUT出版单位文本
6PRICE单价数值(保留小数点后2位)

读者(数据表名:READER)

序号字段名称字段描述字段类型
1READER_ID借书证号文本
2COMPANY单位文本
3NAME姓名文本
4SEX性别文本
5GRADE职称文本
6ADDR地址文本

借阅记录(数据表名:BORROW LOG)

序号字段名称字段描述字段类型
1READER_ID借书证号文本
2BOOK_ID总编号文本
3BORROW_DATE借书日期日期

(1) 创建图书管理库的图书、读者和借阅三个基本表的表结构。请写出建表语句。

(2) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。

(3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。

(4) 查找价格介于10元和20元之间的图书种类(SORT)出版单位(OUTPUT)和单价(PRICE),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。

(5) 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。

(6) 求”科学出版社”图书的最高单价、最低单价、平均单价。

(7) 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。

(8) 考虑到数据安全的需要,需定时将“借阅记录”中数据进行备份,请使用一条SQL语句,在备份用户bak下创建与“借阅记录”表结构完全一致的数据表BORROW_LOG_BAK.井且将“借阅记录”中现有数据全部复制到BORROW_L0G_ BAK中。

(9) 现在需要将原Oracle数据库中数据迁移至Hive仓库,请写出“图书”在Hive中的建表语句(Hive实现,提示: 列分隔符|;数据表数据需要外部导入:分区分别以month_part、day_part 命名)

(10) Hive中有表A,现在需要将表A的月分区 201505 中 user_id为20000的user_dinner字段更新为bonc8920,其他用户user_dinner字段数据不变,请列出更新的方法步骤。(Hive实现,提示:Hlive中无update 语法,请通过其他办法进行数据更新)

实现

数据准备

(1)-- 创建图书表book

CREATE TABLE test_sql.book(book_id string,
`SORT` string, book_name string, writer string, OUTPUT string, price decimal(10,2));
INSERT INTO TABLE test_sql.book VALUES ('001','TP391','信息处理','author1','机械工业出版社','20'); INSERT INTO TABLE test_sql.book VALUES ('002','TP392','数据库','author12','科学出版社','15');
INSERT INTO TABLE test_sql.book VALUES ('003','TP393','计算机网络','author3','机械工业出版社','29'); INSERT INTO TABLE test_sql.book VALUES ('004','TP399',' 微 机 原 理 ','author4',' 科 学 出 版 社 ','39'); INSERT INTO TABLE test_sql.book VALUES ('005','C931','管理信息系统','author5','机械工业出版社','40'); INSERT INTO TABLE test_sql.book VALUES ('006','C932','运筹学','author6','科学出版社','55');

– 创建读者表reader

CREATE TABLE test_sql.reader (reader_id string,
company string, name string, sex string, grade string, addr string);
INSERT INTO TABLE test_sql.reader VALUES ('0001','阿里巴巴','jack','男','vp','addr1');
INSERT INTO TABLE test_sql.reader VALUES ('0002',' 百 度 ','robin',' 男 ','vp','addr2'); INSERT INTO TABLE test_sql.reader VALUES ('0003',' 腾 讯 ','tony',' 男 ','vp','addr3'); INSERT INTO TABLE test_sql.reader VALUES ('0004',' 京 东 ','jasper',' 男 ','cfo','addr4'); INSERT INTO TABLE test_sql.reader VALUES ('0005','网易','zhangsan','女','ceo','addr5'); INSERT INTO TABLE test_sql.reader VALUES ('0006','搜狐','lisi','女','ceo','addr6');

– 创建借阅记录表borrow_log

CREATE TABLE test_sql.borrow_log(reader_id string,
book_id string, borrow_date string);

INSERT INTO TABLE test_sql.borrow_log VALUES ('0001','002','2019-10-14'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0002','001','2019-10-13'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0003','005','2019-09-14'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0004','006','2019-08-15'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0005','003','2019-10-10'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0006','004','2019-17-13');

思路分析

  1. create table as select …

9.在Hive中创建表 “book”,该表有以下列:book_id,book_name,price,author,publish_date。导出Oracle数据库中的"图书"数据并存为一个列分隔的文本文件。

10.使用CREATE TABLE AS SELECT语句,将需要修改的数据复制到一个新表中 ,将需要修改的数据加入到新表中,删除原表A的数据,重命名新表为A,添加月分区

答案获取

建议你先动脑思考,动手写一写再对照看下答案,如果实在不懂可以点击下方卡片,回复:大厂sql 即可。
参考答案适用HQL,SparkSQL,FlinkSQL,即大数据组件,其他SQL需自行修改。

加技术群讨论

点击下方卡片关注 联系我进群

或者直接私信我进群

文末SQL小技巧

提高SQL功底的思路。
1、造数据。因为有数据支撑,会方便我们根据数据结果去不断调整SQL的写法。
造数据语法既可以create table再insert into,也可以用下面的create temporary view xx as values语句,更简单。
其中create temporary view xx as values语句,SparkSQL语法支持,hive不支持。
2、先将结果表画出来,包括结果字段名有哪些,数据量也画几条。这是分析他要什么。
从源表到结果表,一路可能要走多个步骤,其实就是可能需要多个子查询,过程多就用with as来重构提高可读性。
3、要由简单过度到复杂,不要一下子就写一个很复杂的。
先写简单的select * from table…,每个中间步骤都执行打印结果,看是否符合预期, 根据中间结果,进一步调整修饰SQL语句,再执行,直到接近结果表。
4、数据量要小,工具要快,如果用hive,就设置set hive.exec.mode.local.auto=true;如果是SparkSQL,就设置合适的shuffle并行度,set spark.sql.shuffle.partitions=4;

后记

📢博客主页:https://manor.blog.csdn.net

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 Maynor 原创,首发于 CSDN博客🙉
📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐
📢专栏持续更新,欢迎订阅:https://blog.csdn.net/xianyu120/category_12182595.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C进阶实战通讯录

C语言实战通讯录C语言实战通讯录前言整理逻辑整体框架初始化通讯录添加联系人显示联系人删除联系人查找联系人修改联系人销毁通讯录保存联系人信息加载联系人信息所有源码:test.c:Contact.h:Contact.c:C语言实战通讯录 前言 这次用C语言实现通讯录是一…

Nginx_4

Nginx负载均衡 负载均衡概述 早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复杂,单台服务器的性能及单点故障问题就凸显出来了&#xff0c…

VHDL语言基础-组合逻辑电路-基本逻辑门电路

数字电路中的四种基本操作是与、或、非及触发器操作,前三种为组合电路,后一种为时序电路。与非 、或非和异或的操作仍然是与、或、非的基本操作。与、或、非、与非、或非和异或等基本逻辑门电路为常用的门电路。 二输入与非门是一种常用的简单逻辑电路&a…

当下最流行的 ChatGPT :前世今生

GPT 不是凭空而出,它是经过了很多人的努力,以及很长一段时间的演化得来的。因此,梳理一下 GPT 的庞大 “家族” 还是很有必要的,看看他继承了什么,学习了什么,又改进了什么,这样也能更好地理解 …

C++设计模式(11)——桥接模式

亦称: Bridge 意图 桥接模式是一种结构型设计模式, 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。 问题 抽象? 实现? 听上去挺吓人? 让我们慢慢来&…

linux笔记 diff及patch的制作与使用

相关命令展示 为方便查阅博客使用,预先展示相关命令 diff命令 diff -uN old.txt new.txt > patch_test.patch单个文件,不需要使用-r参数 diff 选项参数 旧文件(夹) 新文件(夹) > 补丁diff命令的常…

PS快速入门系列

01-界面构成 1菜单栏 2工具箱 3工县属性栏 4悬浮面板 5画布 ctr1N新建对话框(针对画布进行设置) 打开对话框:ctrl0(字母) 画布三种显示方式切换:F 隐藏工具箱,工具属性栏,悬浮面板…

Linux perf probe 的使用(三)

文章目录前言一、Dynamic Tracing二、kprobes2.1 perf kprobe 的使用2.2 kprobe Arguments3.3 tcp_sendmsg()3.3.1 Kernel: tcp_sendmsg()3.3.2 Kernel: tcp_sendmsg() with size3.3.2 Kernel: tcp_sendmsg() line number and local variable三、uprobes的使用3.1 perf uprobe …

PTA L1-043 阅览室

前言:内容包括四大模块:题目,代码实现,大致思路,代码解读 题目: 天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时&#xf…

Java NIO学习(一):Java NIO概述

一、 IO 概述IO 的操作方式通常分为几种:同步阻塞 BIO、同步非阻塞 NIO、异步非阻塞 AIO。(1)在 JDK1.4 之前,我们建立网络连接的时候采用的是 BIO 模式。(2)Java NIO(New IO 或 Non Blocking I…

【C语言】速刷日记

这里总结10道C语言经典题型问题,有兴趣可以刷刷看。1.递归问题12.递归问题23.短路求值问题4.字符数组定义问题5.二维数组元素访问问题6.指针问题7.二维数组地址问题8.前置与后置问题9.求1的个数问题10.求1的个数移位操作符1.递归问题1 给定 fun 函数如下&#xff0…

Fluid-架构详细解析

前言Fluid 是云原生分布式数据集编排和加速引擎,主要服务于云原生场景下的数据密集型应用,例如大数据应用、AI 应用等。其目标是为AI与大数据云原生应用提供一层高效便捷的数据抽象,将数据从存储抽象出来,以便实现:通过…

服务调用分布式session

目录一、nginx动静分离二、服务调用1、创建配置zmall-cart购物车模块2、创建配置zmall-order订单模块3、服务调用三、spring session实战1、什么是Spring Session2、为什么要使用Spring Session3、错误案例展示4、配置spring-session四、二级域名问题五、用户登录一、nginx动静…

从某种程度上来看,产业互联网是一次对于互联网的弥补和修正

如果对当下我们正在经历的这样一个时代进行一次定义的话,我更加愿意将其划归到产业互联网的范畴里。可能有人会说,这与产业互联网并无联系,因为从本质上来看,当下我们所经历的这样一个时代,其实是与互联网并没有太多联…

(深度学习快速入门)第五章第一节2:GAN经典案例之MNIST手写数字生成

获取pdf:密码7281 文章目录一:数据集介绍二:GAN简介(1)简介(2)损失函数三:代码编写(1)参数及数据预处理(2)生成器与判别器模型&#x…

Acwing---112.雷达设备

雷达设备1.题目2.基本思想3.代码实现1.题目 假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超…

2023-02-09 mysql/innodb存储

前言 大家都知道 MySQL 的数据都是保存在磁盘的,那具体是保存在哪个文件呢?MySQL 存储的行为是由存储引擎实现的,MySQL 支持多种存储引擎,不同的存储引擎保存的文件自然也不同。InnoDB 是我们常用的存储引擎,也是 MySQL 默认的存储引擎。本文主要以 InnoDB 存储引擎展开讨…

centos7.6 设置防火墙

1、查看系统版本 cat /etc/redhat-release2、查看防火墙运行状态 systemctl status firewalld这里可以看到当前是未运行状态(inactive)。 3、关闭开机自启动防火墙 systemctl disable firewalld.service4、启动防火墙并查看状态,系统默认 22 端口是开启的。 sy…

云原生微服务应用平台 EDAS 2022 年度报告

作者:孤戈 最近一年来,随着我们的客户对于云技术的诉求从资源快速交付的服务,转变为对资源精益运用的服务。EDAS 团队结合公共云上所服务的企业类客户的几万个应用,选取了 8 个最具代表性的指标,进行了一次系统性的分…

进度条实时显示request下载文件的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…