【和SQL对比】连续区间的比上期

某支股票最长连续涨了多少交易日
1 select max(连续日数)
2 from (select count(*) 连续日数
3       from (select sum(涨跌标志) over(order by 交易日) 不涨日数
4             from (select 交易日,
5                       case when
6                            收盘价>LAG(收盘价) over(order by 交易日)
7                       then 0 else 1 end 涨跌标志
8                   from 股价表) )
9 group by 不涨日数)

对于较复杂些的次序计算,常规的思维过程无法用SQL描述,必须改变思路转换问题才能完成。这里先计算从初始时刻开始累计的不涨日数,不涨日数相同的交易日即是在连续上涨,针对其分组可计算出最大连涨区间,这个原理读懂已经不易,写出来则更困难。

A
1 =demo.query(“select * from 股价表”).sort(交易日)
2 =0 临时变量记录连续涨了几天
3 =A1.max(A2=if(收盘价>收盘价[-1],A2+1,0)) 比较前日决定A2是否继续加

集算器按自然的思路过程编写计算代码即可。