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