本文主要是介绍【数据库】【sql】如何用SQL实现跨行计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【背景】
这里的跨行计算不是指整体聚合类的函数比如SUM等的功能,而是指递归算法。
比如我接到有需求,有一个结果字段需要是目前所有行该字段的和,这是属于递归类的算法,SQL中如何实现呢?
【方法】
可以使用窗口函数,比如:
SELECTsales_date,sales_amount,LAG(sales_amount) OVER (ORDER BY sales_date) AS prev_sales_amount
FROMsales_data;
这里面的LAG代表前一行的值,顺序由Order By指定。这里是直接获得了上一行的值,如果再和本行进行计算,就可以实现各类递归算法。
除了LAG,通用SQL中还有LEAD,用法差不多,只不过代表下一行的值。
【注意】
不同的数据库,关键词和语法会有所变化,但是大差不差,心法是差不多的。
比如PostgreSQL还有FIRST_VALUE函数等。
这篇关于【数据库】【sql】如何用SQL实现跨行计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!