SQL Practice Logo

SQLPractice Online

LEAD, LAG, FIRST_VALUE, LAST_VALUE: Functions

Module: Window Functions

**Complete Syntax Reference:**

```sql

-- LAG and LEAD (offset-based)

LAG(column, offset, default) OVER (

[PARTITION BY columns]

ORDER BY columns

)

LEAD(column, offset, default) OVER (

[PARTITION BY columns]

ORDER BY columns

)

-- FIRST_VALUE and LAST_VALUE (frame-based)

FIRST_VALUE(column) OVER (

[PARTITION BY columns]

ORDER BY columns

[ROWS/RANGE BETWEEN frame_start AND frame_end]

)

LAST_VALUE(column) OVER (

[PARTITION BY columns]

ORDER BY columns

[ROWS/RANGE BETWEEN frame_start AND frame_end]

)

```

**Essential Frame Specifications:**

```sql

-- Full partition frame (most common for FIRST/LAST_VALUE)

ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING

-- From start to current row (default)

ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

-- Moving window (e.g., 3-row window)

ROWS BETWEEN 2 PRECEDING AND CURRENT ROW

-- Centered window

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING

```

**Practical Examples:**

```sql

-- 1. Stock price analysis

SELECT

date,

closing_price,