溫馨提示×

Lag函數(shù)在比較當前行與前一行數(shù)據(jù)時的用法

sql
小樊
82
2024-09-08 01:48:57
欄目: 編程語言

Lag函數(shù)是一種窗口函數(shù),它用于比較當前行與前一行的數(shù)據(jù)

LAG(column_name, offset, default_value) OVER (PARTITION BY partition_column ORDER BY order_column)

參數(shù)說明:

  • column_name:要比較的列名。
  • offset:可選參數(shù),表示要比較的行與當前行之間的偏移量。默認值為1,表示比較當前行與前一行的數(shù)據(jù)。
  • default_value:可選參數(shù),表示當偏移量超出數(shù)據(jù)范圍時,返回的默認值。
  • PARTITION BY partition_column:可選參數(shù),表示按照某個列進行分區(qū),然后在每個分區(qū)內(nèi)進行比較。
  • ORDER BY order_column:表示按照某個列進行排序,然后在排序后的數(shù)據(jù)中進行比較。

下面是一個使用Lag函數(shù)的例子:

-- 假設有一個銷售數(shù)據(jù)表sales_data,包含日期(date)和銷售額(sales)兩個字段
WITH sales_data AS (
  SELECT '2021-01-01' AS date, 100 AS sales
  UNION ALL SELECT '2021-01-02', 150
  UNION ALL SELECT '2021-01-03', 200
  UNION ALL SELECT '2021-01-04', 180
)

SELECT
  date,
  sales,
  LAG(sales, 1, 0) OVER (ORDER BY date) AS previous_day_sales
FROM sales_data;

查詢結(jié)果如下:

date sales previous_day_sales
2021-01-01 100 0
2021-01-02 150 100
2021-01-03 200 150
2021-01-04 180 200

在這個例子中,我們使用Lag函數(shù)比較了當前行與前一行的銷售額。對于第一行數(shù)據(jù),由于沒有前一行數(shù)據(jù),所以返回了默認值0。

0