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

某支股票最长连续涨了多少交易日

SQL解法

select max(连续日数)
from (select count(*) 连续日数
      from (select sum(涨跌标志) over(order by 交易日) 不涨日数
            from (select 交易日,
                      case when
                          收盘价>LAG(收盘价) over(order by 交易日)
                     then 0 else 1 end 涨跌标志
                  from 股价表) )
group by 不涨日数)

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

SPL解法

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

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