网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
每日语录
人生不如意之事十有八九,剩下的十之一二,超级不如意
第23题:
需求列表
求每日每个客户每只股票的市值增长率
客户购买理财hs_asset.stock,描述如下:
create table hs_asset.stock(
init_date integer comment ’ 日 期 ',
clinet_id varchar(20)
comment ‘客户号’,
stock_code varchar (6)
comment ’ 股 票 代 码 ',
market_value numeric(38,20)
comment ‘持仓市值’
);
定义:市值增长率=(当日市值-上日市值)/上日市值, 求每日每个客户每只股票的市值增长率
–假设都是连续日期,没有中断。休市也有持仓记录。
create or replace temporary view
stock(init_date, client_id, stock_code, market_value)
as values
(‘2021-09-01’, 1, ‘001’, 100),
(‘2021-09-02’, 1, ‘001’, 200),
(‘2021-09-03’, 1, ‘001’, 300),
(‘2021-09-01’, 1, ‘002’, 500),
(‘2021-09-02’, 1, ‘002’, 400),
(‘2021-09-03’, 1, ‘002’, 300),
(‘2021-09-01’, 2, ‘003’, 100),
(‘2021-09-02’, 2, ‘003’, 200),
(‘2021-09-03’,; 2, ‘003’, 300)
思路分析
计算股票表 stock 中各股票的增长率。具体步骤如下:
- 内层子查询中,通过 lag() 函数获取每只股票的上一个交易日的市值,即 last_market_value。
- 在外层查询中,选取所有列并增加一列 incre_rate,在这列中计算每只股票的增长率。
- 增长率的计算方式为 (market_value - last_market_value) / last_market_value,其中 market_value 表示某只股票的当日市值,last_market_value 表示前一天的市值。
- 需要注意的是,如果上一个交易日的市值为 0,则增长率为 null。
答案获取
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!