【和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很擅长这些与次序及位置相关的计算,代码简捷且符合思路过程。
