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