阅读量:0
Oracle的LAG函数是一个分析函数,用于在查询结果中获取当前行之前的某一行的值
LAG函数的基本语法如下:
LAG(column, offset, default_value) OVER (ORDER BY order_by_column)
其中:
- column:要获取历史数据的列名。
- offset:表示要获取之前多少行的数据,默认为1,表示获取上一行的数据。
- default_value:当没有足够的行可供参考时返回的默认值,如果不指定,则返回NULL。
- order_by_column:用于确定行顺序的列名,通常用于时间戳或日期列。
以下是一个简单的示例,展示了如何使用LAG函数来获取员工的前一个月的销售额:
SELECT employee_id, sale_date, sales_amount, LAG(sales_amount, 1, 0) OVER (PARTITION BY employee_id ORDER BY sale_date) AS prev_month_sales FROM sales;
在这个示例中,我们从sales
表中选择employee_id
、sale_date
和sales_amount
列。然后,我们使用LAG函数获取每个员工前一个月的销售额。PARTITION BY
子句用于将数据按员工ID分组,而ORDER BY
子句用于按销售日期排序。如果没有前一个月的销售额数据,LAG函数将返回默认值0。