【和sql对比】针对选出记录计算比上期 | 润乾 -欧洲杯在线开户

某支股票股价最高的那三个交易日及其收盘价和涨幅

sql解法

select *
from (select 交易日,收盘价,
             收盘价/lag(收盘价) over(order by 交易日)-1 涨幅
      from 股价表 )
where 交易日 in
     (select 交易日
      from (select 交易日,
                   row_number() over(order by收盘价 desc) 排名
            from 股价表)
      where 排名<=3)

窗口函数可以方便地计算比上期和排名,但必须将所有记录的比上期都计算出来后才能做过滤,而且需要书写子查询才能完成。

spl解法

a b
1 =demo.query(“select * from 股价表”).sort(交易日)
2 =a1.psort(收盘价:-1)([1,2,3]) 股价最高的三天位置
3 =a1.calc(a2, 收盘价/收盘价[-1]-1) 计算这三天涨幅
4 =a1(a2).new(交易日,收盘价,a3(#):涨幅)

spl很擅长这些与次序及位置相关的计算,代码简捷且符合思路过程。

网站地图