上一篇初步的介绍了一下面向集合思维编写SQL实现开窗函数的功能;
在这里也稍微介绍一下另外一种编写SQL的思维—面向过程,例如Oracle的PL/SQL,作为一种过程化的语言,以赋值、条件分支、循环等作为基本处理单元,并将系统整体分割成很多这样的单元的思维方式,在我看来,这更偏向于开发工作者。
确实Oracle和MSSQL这两种付费的数据库,有大量的高级函数去简化数据工作,这二者也广泛应用于商业智能领域。那么离开这些付费的产品工具,我们仅依靠着SQL和关系型数据库的原理又能在数据的世界中走多远呢?
1.场景与需求
我们有如下的一张表,date字段记录了交易日期,amt字段记录了交易金额,如下图:
现在我们要计算一个移动累计值,即计算当前行与其前面两行,一共是三行的和,如下图: