【和SQL对比】按指定次序排序
根据月度销售额表计算每次第一个月比上季同月的增长额,有些月可能无数据。
SQL解法
with M as (select 1 月 from dual union select 4 from dual union select 7 from dual union select 10 from dual) select 月, 销售额,销售额-LAG(销售额) over(order by 月) from (select M.月 月,销售表.销售额 销售额 from M left join 销售表 on (M.月=销售表.月份) ) order by 月
SQL完成指定次序排序需要用外连接,而且还要有专门的序号字段保证结果集的次序。
SPL解法
A | |
1 | =demo.query(“select * from 销售表”).align@1([1,4,7,10],月份) |
2 | =A1.new(#:月,销售额,销售额-销售额[-1]:增长额) |
SPL特有的对齐运算可以替代SQL的外连接,有序集合机制也无须再有序号字段。