SQL题:计算股票连续涨幅超过5%最长时间的股票以及天数
题目描述
现有每个交易日每只股票的开盘价及收盘价,在表stock_price表中,表中字段如下:
股票ID | 交易日期 | 开盘价 | 收盘价 |
stock_id | date | k_price | s_price |
日期ID | 交易日期 |
ID | date |
解题思路
1.计算每一只股票每天的涨跌幅,筛选出涨幅超过5%的数据
2.通过stock_date表中的ID排除周末为非交易日带来的干扰(ID为连续自增,如果直接按照交易日期判断会因为周末为非交易日,导致无法计算满足题目要求的最大连续工作日)
3.按每一只股票计算连续涨幅超过5%的天数
4.找出最长的时间和对应的股票ID
代码实现sql
--1.计算每一只股票每天的涨跌幅,筛选出涨幅超过5%的数据 with t1 as ( select stock_id,date from stock_price where (s_price-k_price)/k_price > 0.05);