Oracle的lag、lead函数使用
- 一、LAG函数(当前行之前)
- 二、LEAD函数(当前行之后)
Oracle数据库中的LAG和LEAD函数可以用于查询行与前/后行之间的差异。
一、LAG函数(当前行之前)
LAG函数返回分析窗口内的当前行之前指定行数的值。语法如下:
LAG (column, offset, default_value) OVER (PARTITION BY partition_clause ORDER BY order_clause)
或者这样理解:
lag(字段值,向上获取行数,没有获取到的返回默认值) over(partition by 分区字段,order by 排序字段)
其中,column是要查询的列,offset是需要查询的行的偏移量(默认为1),default_value是当偏移量超出范围时返回的值(可选),partition_clause用于指定分区条件,order_clause用于指定排序条件。
例如,查询销售订单前一天的销售额:
SELECT order_date,amount,lag(amount,1,0) over(ORDER BY order_date) AS prev_amountFROM sales_orders;
二、LEAD函数(当前行之后)
LEAD函数与LAG函数类似,但返回的是当前行之后指定行数的值。语法如下:
LEAD (column, offset, default_value) OVER (PARTITION BY partition_clause ORDER BY order_clause)
或者这样理解:
lead(字段值,向下获取行数,没有获取到的返回默认值) over(partition by 分区字段,order by 排序字段)
例如,查询销售订单后一天的销售额:
SELECT order_date,amount,lead(amount,1,0) over(ORDER BY order_date) AS next_amountFROM sales_orders;