在Oracle中,LAG函數用于獲取窗口內先前行的值
SELECT column1,
column2,
LAG(column2, offset, default_value) OVER (ORDER BY column1) as lagged_column
FROM table_name;
這里,offset
是可選參數,表示要向前檢索的行數。默認值為1,即默認情況下,LAG函數會獲取前一行的值。default_value
是當沒有足夠的行可供LAG函數操作時返回的默認值。
以下是一個實際示例:
-- 創建一個名為sales_data的表
CREATE TABLE sales_data (
date_id DATE,
sales_amount NUMBER
);
-- 插入一些數據
INSERT INTO sales_data VALUES ('01-JAN-2021', 100);
INSERT INTO sales_data VALUES ('02-JAN-2021', 150);
INSERT INTO sales_data VALUES ('04-JAN-2021', 200);
-- 使用LAG函數獲取前一天的銷售額,并將默認值設置為0
SELECT date_id,
sales_amount,
LAG(sales_amount, 1, 0) OVER (ORDER BY date_id) as previous_day_sales
FROM sales_data;
在這個示例中,我們創建了一個名為sales_data
的表,其中包含日期和銷售額。然后,我們使用LAG函數獲取前一天的銷售額,并將默認值設置為0。注意,由于我們沒有為2021年1月3日提供數據,因此LAG函數將返回默認值0。