SQL Practice Logo

SQLPractice Online

Offset Functions (LAG/LEAD): Functions

Module: Window Functions

**Basic LAG/LEAD Syntax:**

```sql

SELECT

column1,

column2,

LAG(column_name, offset, default) OVER (

[PARTITION BY partition_columns]

ORDER BY sort_columns

) AS previous_value,

LEAD(column_name, offset, default) OVER (

[PARTITION BY partition_columns]

ORDER BY sort_columns

) AS next_value

FROM table_name;

```

**Parameter Details:**

- **column_name**: Required - which column to access

- **offset**: Optional (default 1) - how many rows back/forward

- **default**: Optional (default NULL) - value when no row exists

**Simple Examples:**

```sql

-- 1. Basic LAG - previous row value

SELECT

date,

sales,

LAG(sales) OVER (ORDER BY date) as previous_day_sales

FROM daily_sales;

-- 2. LAG with offset - value from 7 days ago

SELECT

date,

sales,

LAG(sales, 7) OVER (ORDER BY date) as week_ago_sales

FROM daily_sales;

-- 3. LAG with default - avoid NULL in first row

SELECT

date,

sales,

LAG(sales, 1, 0) OVER (ORDER BY date) as previous_sales

FROM daily_sales;

```