每天一道大厂SQL题【Day24】华泰证券真题实战(六)
每天一道大厂SQL题【Day24】华泰证券真题实战(六)
大家好,我是Maynor。相信大家和我一样,都有一个大厂梦
,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题
,以每日1题的形式,带你过一遍热门SQL题并给出恰如其分的解答。
一路走来,随着问题加深,发现不会的也愈来愈多。但底气着实足了不少,相信不少朋友和我一样,日积月累才是最有效的学习方式!
每日语录
每次想省钱的时候,就是你智商到达顶峰之时
第24题:
需求列表
编写一个脚本,代码可用python或pyspark或scala(40分)
需求:cust_pft是客户(cust_if)每天(date)的资产净值(pft),现在需要获得每个客户近1年的最大回撤:
最大回撤定义:在该客户的净值曲线中,当出现最大的净值的时点记为m1,这之后出现的净值比m1那天净值相差最大的净值记为m2,最大回撤就是(m2-m1)/m1.(注意是出现最大净值之后的最小净值,两者的差)
create or replace temporary view cust_pft (cust_id,date,pft)
as values
(1,‘2021-01-01’,10000),
(1,‘2021-01-02’,10010),
(1,‘2021-01-03’,10020),
(1,‘2021-01-04’,9999),
(1,‘2021-01-05’,9998),
(1,‘2021-01-06’,10020),
(1,‘2021-12-27’,6000),
(1,‘2021-12-28’,6001),
(1,‘2021-12-29’,6002);
思路分析
- 使用MAX()函数计算最大回撤;
- 使用子查询计算每个日期的价格、最高价格和回撤率;
- 使用MAX() OVER()函数计算每个日期之前的最高价格;
- 计算回撤率,并使用MAX()函数找到最大回撤。
答案获取
建议你先动脑思考,动手写一写再对照看下答案,如果实在不懂可以点击下方卡片,回复:大厂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
相关文章
- 软测百科之 日常测试工作中哪些是必须要知道的 SQL 语句?
- Sql Server A表汇总到B表存储过程(直接赋参数用,源码)
- 第四章 使用管理门户监视IRIS - 监控SQL活动
- 实战演练 | 使用纯 SQL 将表复制到新表
- 浅析 SQL Server 的 CROSS APPLY 和 OUTER APPLY 查询 - 第一部分
- B站(云e办)SpringBoot实战练习的Sql文件、前端Vue源码、后端springboot源码
- 《WEB安全渗透测试》(6)SQL注入实战:二次注入
- 《Oracle数据库管理与维护实战》—— 2.10 SQL语句的处理过程
- 《Java EE核心框架实战》—— 2.4 < sql >标签
- SQL 一个表中的两个外键来自于同一个表创造的视图
- sql之约束
- sql server 数据分析优化实战(一)——SQL语句优化
- SQL语句中union all和union的区别以及用法
- sql server查询行数和加了order by的查询行数不同!!!
- 代码实现SQL SERVER TCP/IP协议配置
- (2.2)sql server函数,sql server自定义函数/表值函数与存储过程
- CYQ.Data V5 文本数据库支持SQL语句操作(实现原理解说)
- powerDesigner根据sql脚本来逆向生成pdm等模型
- sql server-SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON
- sql (6) exists